【发布时间】:2020-06-18 17:54:06
【问题描述】:
大家好。 我被卡住了,不明白为什么代码会给我一个“错误”的答案。
我的任务:编写一个程序,该程序接受数字并计算它们,直到用户键入“退出”, 然后程序打印出用户刚刚插入的所有数字的摘要并停止。
我现在在网上学java,不知道怎么回答: 当你输入1个或2个或3个或更多的数字时,它计算并打印错误的结果,甚至代码无法编译并弹出错误。
例如你输入了 2 个数字并且有错误
线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“exit” 在 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) 在 java.base/java.lang.Integer.parseInt(Integer.java:652) 在 java.base/java.lang.Integer.parseInt(Integer.java:770) 在 JR.constructors.Solution.main(Solution.java:11)
OR 3 个数字,例如 2 + 3 + 4,它会打印 6 而不是 8。
请帮帮我!
这是我的代码
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int sum = 0;
while(true){
int a = Integer.parseInt(reader.readLine());
String s = reader.readLine();
sum += a;
if(s.equals("exit")){
System.out.println(sum);
break;
}
}
}
【问题讨论】:
-
"exit" 看起来不像
parseInt()的数字。 -
进入“exit”时跟随数据流。在
s.equals("exit")检查之前将它提供给哪里。 -
请有人解释得更清楚
-
使用调试器跟踪您的代码,或者只用手指指向每一行。您创建了 BufferedReader。您将
sum初始化为零。现在你开始一个循环。读取一行 - 如果没有可用的行,它会等待。将您刚刚读取的行解析为 Integer 并将其分配给a— 如果它不是 Integer,您将收到 NumberFormatException。现在将另一行读入s。请注意,您尚未进行计算。将a添加到sum。检查s是否为“退出”...如果您键入的第二行是数字怎么办?该数字与“退出”进行比较,它在计算中从未使用。等
标签: java