Java程序从键盘输入一个9位数,将它分解为9个个位数,按顺序输出三行三列,并在每一行输出该行的和,如下图所示,输入的数可以不同。设计一个程序实现该功能,并需要进行异常处理。
时间: 2024-03-05 18:55:04 浏览: 41
好的,我理解了您的问题。以下是Java程序的代码实现:
```java
import java.util.Scanner;
public class DecomposeNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个9位数:");
long num = sc.nextLong();
Decomposer decomposer = new Decomposer();
decomposer.decompose(num);
}
}
class Decomposer {
public void decompose(long num) {
try {
if (num <= 0 || num >= 1000000000) {
throw new Exception("输入的数字不合法!");
}
int[] nums = new int[9];
for (int i = 0; i < 9; i++) {
nums[i] = (int) (num % 10);
num /= 10;
}
int sum1 = nums[0] + nums[1] + nums[2];
int sum2 = nums[3] + nums[4] + nums[5];
int sum3 = nums[6] + nums[7] + nums[8];
System.out.printf("%d %d %d %d\n", nums[0], nums[1], nums[2], sum1);
System.out.printf("%d %d %d %d\n", nums[3], nums[4], nums[5], sum2);
System.out.printf("%d %d %d %d\n", nums[6], nums[7], nums[8], sum3);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
```
解释一下代码:
1. 在主函数中,我们用Scanner类从键盘读取了一个long型数num。
2. 然后我们创建了一个Decomposer类的对象decomposer,并调用了它的decompose()方法。
3. 在Decomposer类的decompose()方法中,我们使用了try-catch语句进行异常处理。如果输入的数字不在1~999999999的范围内,我们就抛出一个异常,并在catch块中输出异常信息。
4. 如果输入的数字合法,就将它分解成9个个位数,并计算每一行的和。最后使用printf()方法按照题目要求输出这些数字和它们的和。
注意,我们使用了long型数来存储输入的9位数,因为它可能会超出int型数的范围。此外,我们在输出数字和它们的和时,使用了printf()方法,可以方便地控制输出格式。
阅读全文