Java中While循环求和未包含首个输入的问题求助
修复Java循环中第一个输入未计入总和的问题
嘿,我一眼就看到问题出在哪了——你这段代码里第一个输入的数字完全没被加到总和sum里!看你给的示例,15没被算进去,27+45+50刚好是122,和输出一致,但正确的总和应该是15+27+45+50=137对吧?
问题根源
- 你在
while循环外面先读取了第一个input,但这一步根本没有执行sum += input的操作; - 进入循环后,你才重新读取新的输入并加到总和里,这就直接漏掉了最开始输入的那个数字;
- 还有个小隐患:如果用户第一次就输入了能被10整除的数,你的代码会直接跳出循环,连结果输出都没有,这显然不是你想要的。
修复后的代码
我调整了代码逻辑,把输入、求和、判断的流程统一到循环里,这样所有输入都会被正确统计:
import java.util.*; class Scratch { public static void main(String[] args) { Scanner in = new Scanner(System.in); int input, sum = 0; while (true) { System.out.print("Enter a number: "); input = in.nextInt(); sum += input; // 读取输入后立刻加到总和,所有输入都不会漏 if (input % 10 == 0) { System.out.println("The total value is: " + sum); System.out.println("The last input was divisible by 10"); break; // 符合条件就终止循环 } } } }
修改说明
- 用
while(true)无限循环替代原来的条件判断,流程更清晰,也解决了首次输入就符合条件无输出的问题; - 把输入读取和求和操作放到循环内,每读取一个数字就立即加到总和,确保所有输入都被计入;
- 移除了循环外重复的输入代码,避免冗余。
验证示例运行
现在再跑你给的测试用例,结果就正确了:
Enter a number: 15
Enter a number: 27
Enter a number: 45
Enter a number: 50
The total value is: 137
The last input was divisible by 10
内容的提问来源于stack exchange,提问作者arstdhneio
相关产品推荐
相关产品推荐

