Java循环输入整数报错:仅调用一次Integer.parseInt的实现疑问
解惑:关于只调用一次
Integer.parseInt(reader.nextLine())的疑问 嘿,我来帮你理清这个误区!那个错误提示不是说整个程序只能调用一次Integer.parseInt(reader.nextLine()),而是说在每次循环的迭代过程里,只需要调用一次这个读取并转换输入的操作,把结果存在变量里,不要重复调用——比如别在判断条件里又调用一次,那样会导致你莫名其妙跳过一次用户输入,还浪费了输入的内容。
你现在的代码其实已经踩对了核心逻辑:每次循环里只调用一次Integer.parseInt(reader.nextLine()),把读取到的数值存在number变量里,之后用这个变量做退出判断。不过按照需求,你还需要在输入-1时输出结束语句,我给你调整了完整的可运行代码:
import java.util.Scanner; public class TheSumOfSetOfNumbers { public static void main(String[] args) { Scanner reader = new Scanner(System.in); int number; System.out.println("Type numbers: "); while (true) { // 每次循环只执行一次读取+转换操作,把结果存在number变量中 number = Integer.parseInt(reader.nextLine()); if (number == -1) { System.out.println("Thank you and see you later!"); break; } // 要是之后需要对输入的数字做统计(比如求和、计数奇偶),直接用number变量就行 // 比如 sum += number; count++; 这类操作都可以放在这里,不用再重复读取输入 } reader.close(); // 记得关闭Scanner资源,养成好习惯哦 } }
为什么要强调“每次循环只调用一次”?举个反例:如果你写成if (Integer.parseInt(reader.nextLine()) == -1),那每次判断的时候都会读取一行输入——如果用户输入的不是-1,这个输入就被直接用在判断里,没有存下来,后续想用来做求和、计数都没法用,而且下一次循环又会读取新的输入,等于白白浪费了用户的一次输入内容。
简单说,这个提示的核心是:把用户的一次输入读取并转换后,存到变量里,所有后续逻辑都复用这个变量,不要重复读取输入。这样既避免了输入丢失的问题,也让代码更清晰高效。
内容的提问来源于stack exchange,提问作者Bence Movik
相关产品推荐
相关产品推荐

