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
相关产品推荐
相关产品推荐

