Java实现连续输入数字求和直至输入0的问题求助
问题分析与修复方案
嘿,我来帮你梳理下这段代码里缺少的关键内容,以及可以优化的点:
- 缺少累加求和的变量:你现在的代码只是输出当前输入的数字,并没有把每次输入的数值累加起来。需要在循环外定义一个用于存储总和的变量,初始值设为0,每次输入非0数字时就把它加到总和里。
- Scanner对象重复实例化:你在
while循环内部每次都创建新的Scanner对象,这既浪费内存,还可能引发输入相关的异常。应该把Scanner的创建移到循环外面,整个程序只用一个实例就够了。
下面是修改后的完整代码:
import java.util.Scanner; public class Task3 { public static void main(String[] args) { // 只创建一次Scanner对象 Scanner in = new Scanner(System.in); // 定义累加变量,初始值为0 int sum = 0; while (true) { System.out.println("Enter a number"); int number = in.nextInt(); if (number == 0) { System.out.println("Okay thanks!"); // 关闭Scanner释放资源 in.close(); break; } else { sum += number; System.out.println("The current answer is :" + sum); } } } }
简单说明下修改点:
- 把
Scanner in = new Scanner(System.in);移到了循环外部,避免重复创建对象; - 添加了
int sum = 0;作为累加容器,每次输入非0数字时执行sum += number;完成求和; - 退出循环前调用
in.close();关闭Scanner,养成良好的资源释放习惯。
内容的提问来源于stack exchange,提问作者AJ Villani
相关产品推荐
相关产品推荐

