Java数组平均值计算器问题:输出乱码且平均值错误求助
修正后的完整代码及问题解析
嘿,我猜你是没写完那几个关键方法的实现才导致的问题——毕竟你只贴了main方法的开头。我用最基础的Java代码给你补全并修正,完美解决数字列表乱码和平均值错误的问题:
package averagewitharrays; import java.util.Scanner; public class AverageWithArrays { public static void main(String[] args) { double[] numbers = numberArray(); // 避免空数组导致后续报错 if (numbers.length == 0) { System.out.println("你没有输入任何数字哦"); return; } double average = getAverage(numbers); printAverage(numbers, average); } // 获取用户输入的数字数组 public static double[] numberArray() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要计算平均值的数字个数:"); int count = scanner.nextInt(); // 初始化指定长度的数组,避免空指针或随机值 double[] nums = new double[count]; System.out.println("请输入" + count + "个数字:"); for (int i = 0; i < count; i++) { // 确保只读取数字,避免输入非数字导致的乱码 while (!scanner.hasNextDouble()) { System.out.println("请输入有效的数字哦!"); scanner.next(); // 清除无效输入 } nums[i] = scanner.nextDouble(); } scanner.close(); return nums; } // 计算数组平均值 public static double getAverage(double[] numbers) { double sum = 0; for (double num : numbers) { sum += num; } // 除以数组长度得到平均值,这里已经在main里判断过长度不为0 return sum / numbers.length; } // 打印数组和平均值 public static void printAverage(double[] numbers, double average) { System.out.print("你输入的数字列表:"); // 遍历数组逐个打印,避免直接输出数组对象导致的哈希乱码 for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i]); if (i != numbers.length - 1) { System.out.print(", "); } } // 格式化平均值,保留两位小数更直观 System.out.printf("\n这些数字的平均值是:%.2f", average); } }
关键修正点说明
- 解决数字列表乱码问题:
- 之前你可能直接输出了数组对象(比如
System.out.println(numbers)),这会打印数组的哈希值(类似[D@15db9742这种乱码),现在改成循环遍历数组逐个打印元素。 - 在输入环节加了判断,确保用户只能输入有效的数字,避免非数字输入导致的程序异常或乱码。
- 之前你可能直接输出了数组对象(比如
- 解决平均值计算错误问题:
- 确保数组初始化是指定长度的空数组,而不是未初始化的随机值数组。
- 累加所有数组元素后,正确除以数组的长度,并且在main方法里提前判断数组是否为空,避免除以0的错误。
- 用增强for循环遍历数组累加,比普通for循环更简洁不易出错。
内容的提问来源于stack exchange,提问作者crazyaboutjava2020
相关产品推荐
相关产品推荐

