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

Java带输入的While循环无输入提示及结果输出问题求助

问题分析与代码修复

问题现象

编写的课堂练习程序,需求为提示用户输入一系列以0结尾的数字,正数累加到positiveSum,负数累加到negativeSum,统计总数字个数并计算double类型平均值。但运行时仅显示IntelliJ下载目录路径,无输入提示和结果输出,IDE无错误警告。

代码问题点

  • 初始输入无提示:循环前直接调用input.nextInt(),程序无任何提示就等待用户输入,用户无法知晓需要操作,导致程序看似无响应
  • 首次输入被遗漏:循环开始后才读取新的输入,首次输入的数字未被纳入统计和累加
  • 平均值计算错误:公式(numberOfPositive + numberOfNegative) / totalNumbers逻辑错误,实际应为正负数值总和除以总个数,且未做类型转换导致整数除法精度丢失
  • 输出时机错误:将结果输出放在循环内部,每次输入数字就打印中间状态,不符合需求的最终结果输出
  • 输出文本混淆:将正数/负数的总和(positiveSum/negativeSum)错误描述为“个数”
  • 除零风险:若用户直接输入0,totalNumbers为0,计算平均值会触发除零异常

修复后的代码

import java.util.Scanner;

public class LoopPractice {
    public static void main(String[] args) {
        // 创建Scanner对象
        Scanner input = new Scanner(System.in);

        int positiveSum = 0;
        int negativeSum = 0;
        int numberOfPositive = 0;
        int numberOfNegative = 0;
        int totalNumbers = 0;

        // 先提示用户输入
        System.out.println("Enter integers ending with 0: ");
        int integers = input.nextInt();

        while (integers != 0) {
            if (integers > 0) {
                positiveSum += integers;
                numberOfPositive++;
                totalNumbers++;
            } else if (integers < 0) {
                negativeSum += integers;
                numberOfNegative++;
                totalNumbers++;
            }
            // 读取下一个输入
            integers = input.nextInt();
        }

        // 输出最终结果
        System.out.println("Sum of positive numbers: " + positiveSum);
        System.out.println("Sum of negative numbers: " + negativeSum);
        System.out.println("Total number of entered numbers: " + totalNumbers);
        
        // 处理除零情况
        if (totalNumbers > 0) {
            double average = (double)(positiveSum + negativeSum) / totalNumbers;
            System.out.println("Average of the numbers: " + average);
        } else {
            System.out.println("No numbers were entered except 0.");
        }

        input.close();
    }
}

修复说明

  • 将输入提示移至初始输入前,让用户明确知晓需要输入数字
  • 先读取输入再进入循环,确保每一个输入的数字(除了终止的0)都被处理
  • 修正平均值计算逻辑,用正负总和除以总个数,并通过(double)强制类型转换避免整数除法
  • 将所有结果输出移至循环结束后,只打印最终统计结果
  • 修正输出文本,明确区分总和与个数的描述
  • 添加除零判断,避免用户直接输入0时出现异常

内容的提问来源于stack exchange,提问作者Larry Sizemore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:12:22