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

Java使用while循环、String与double数组计算平均值程序无输出问题

Java平均值计算程序问题修复

原代码核心问题

  • 输入读取逻辑错误:StdIn.readAllStrings()、StdIn.readAllDoubles()会一次性读取全部输入,第一次执行后输入流就为空,后续没有任何数据可以读取
  • 数据存储逻辑缺失:读取到的姓名、三个数值没有存入你定义的1个String数组、3个double数组中,后续无法输出
  • 输出逻辑完全错误:第一个循环读完输入后,第二个循环的!StdIn.isEmpty()判断永远不成立,不会进入输出分支,同时直接打印names数组只会输出数组内存地址,平均值计算逻辑也不符合需求(你写的是累计所有输入值的平均,需求是每组三个数单独计算平均)

修复后可运行代码

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

public class Average { 
    public static void main(String[] args) { 
        int n = Integer.parseInt(args[0]);
        
        String[] names = new String[n];
        double[] a = new double[n];
        double[] b = new double[n];
        double[] c = new double[n];
        
        int counter = 0;
        // 读取n行输入,存到对应数组
        while (counter < n && !StdIn.isEmpty()) {
            // 每次读一行的四个值:1个姓名+3个数字
            names[counter] = StdIn.readString();
            a[counter] = StdIn.readDouble();
            b[counter] = StdIn.readDouble();
            c[counter] = StdIn.readDouble();
            counter++;
        }
        
        // 遍历数组输出结果,计算每组平均值
        int i = 0;
        while (i < n) {
            double average = (a[i] + b[i] + c[i]) / 3;
            StdOut.printf("%s %.0f %.0f %.0f %.2f%n", names[i], a[i], b[i], c[i], average);
            i++;
        }
    }
}

使用说明

运行时执行命令java Average 4,依次输入4行内容后按下Ctrl+Z(Windows系统)/ Ctrl+D(Mac/Linux系统)即可看到输出,和你给出的预期效果完全一致。

内容的提问来源于stack exchange,提问作者gizmo.java

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:27:02