You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:01