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

Java循环求和问题:输入整数至0,求和逻辑错误求修正

Java求和程序:接收输入直到0并计算总和的修正方案

原代码的核心问题

你的代码逻辑完全偏离了需求:

  • 仅在程序启动时读取一次用户输入,之后靠x--手动修改数值,完全没有再次获取新的输入
  • 循环条件依赖x>0,但修改x的方式是自减而非读取输入,导致要么无限循环(无x--时),要么执行一次就退出(有x--时)
  • 循环内重复执行x--,进一步打乱了变量逻辑

修正后的代码

import java.util.Scanner;

public class SumUntilZero {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int sum = 0;
        int x;
        
        // 持续读取输入,直到输入0才退出
        while (true) {
            x = in.nextInt();
            if (x == 0) {
                break;
            }
            // 仅累加正数,若需要累加所有非0数,直接去掉这个if判断
            if (x > 0) {
                sum += x;
            }
        }
        
        // 输入0后,输出最终总和
        System.out.println("所有输入数的总和为:" + sum);
        in.close();
    }
}

关键修正点

  • 用while(true)构建无限循环,通过输入0时执行break退出,逻辑更直观
  • 每次循环内重新读取用户输入,这是实现"持续接收输入"的核心
  • 将总和输出放在循环结束后,满足"输入0后输出之前所有数总和"的需求
  • 增加in.close()关闭扫描器,规范释放IO资源
  • 如果需求允许累加负数,直接删除if(x>0)的判断即可

内容的提问来源于stack exchange,提问作者zeeshan nafees

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:25:50