编写一个Java程序,键盘输入5个数字,输出他们的平均值。实现一个方法Avg(),该方法接受一个整数数组作为参数,计算数组中所有数的平均值。使用异常处理机制处理可能出现的以下情况: 1、数组为空 2、
时间: 2024-10-15 19:12:16 浏览: 36
在Java中编写一个程序来计算一组数字的平均值并处理异常,你可以这样做:
```java
import java.util.Scanner;
import java.util.InputMismatchException;
public class AverageCalculator {
public static double Avg(int[] numbers) throws IllegalArgumentException {
if (numbers == null || numbers.length == 0) { // 检查数组是否为空
throw new IllegalArgumentException("数组不能为空");
}
int sum = 0;
for (int num : numbers) {
try {
sum += num; // 尝试将每个元素加到总和中
} catch (InputMismatchException e) {
System.out.println("输入错误,非数字字符遇到,请重新输入:");
Scanner scanner = new Scanner(System.in);
return Avg(scanner.nextIntArray(5)); // 重新获取用户输入
}
}
return (double) sum / numbers.length; // 计算平均值
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
try {
int[] userNumbers = input.nextIntArray(5); // 获取用户输入的5个数字
double average = Avg(userNumbers);
System.out.printf("输入数字的平均值为: %.2f\n", average);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InputMismatchException e) {
System.out.println(e.getMessage());
} finally {
input.close(); // 关闭输入流
}
}
}
```
在这个程序中,我们首先检查输入的数组是否为空。如果为空,则抛出`IllegalArgumentException`。然后,我们在循环中尝试将每个元素加起来,并捕获可能出现的`InputMismatchException`,当用户输入非数字字符时,会提示用户重新输入,并递归调用`Avg`方法。
阅读全文