我完全不熟悉编程并在我的Uni中使用Java 101并且已经在这个问题上奋斗了一个小时,搜索网络而不是理解错误。
因此,练习是制作一个程序,提示数字,读取它们并对它们求和,直到用户输入0并且程序终止。我的问题是我的程序忽略了我输入的第一个数字,我总是要输入两次。似乎循环是问题,但我怎么知道呢?这是我到目前为止的代码:
import java.util.Scanner;
public class SumOfMultipleNumbers {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int sum = 0;
while (true) {
int read = Integer.parseInt(reader.nextLine());
if (read == 0) {
break;
}
read = Integer.parseInt(reader.nextLine());
sum += read;
System.out.println("Sum now: " + sum);
}
System.out.println("Sum in the end: " + sum);
}
}
那么如何更正我的代码,以便每次输入数字而不是每隔一次输入时它会增加总和?
答案 0 :(得分:1)
read = Integer.parseInt(reader.nextLine());
每个循环两次
一旦宣布read
int read = Integer.parseInt(reader.nextLine());
然后再检查零
read = Integer.parseInt(reader.nextLine());
你只需要做一次
您可能想要使用的是do while循环
do
{
// read variable in
// print for sum
}while(variableReadIn != 0);
答案 1 :(得分:1)
那是因为你在检查零输入后读了一行。
while (true) {
int read = Integer.parseInt(reader.nextLine());
if (read == 0) {
break;
}
// this is not needed: read = Integer.parseInt(reader.nextLine());
sum += read;
答案 2 :(得分:0)
你在循环开始时调用reader.nextLine()
,以确定是否应该中断循环,然后再次执行以获得实际数字总和。这就是你的代码第一次忽略输入值的原因。
您要做的只是致电reader.nextLine()
一次,并检查退出条件的值。我可能会这样做:
while (true) {
String inputText = reader.nextLine();
if(inputText.equals("0")){
break;
}
int read = Integer.parseInt(inputText);
sum += read;
System.out.println("Sum now: " + sum);
}
答案 3 :(得分:0)
每次拨打reader.nextLine()
时,都会从扫描仪中读取一个新行,在检查零之前和将其添加到总和之前调用此函数。
最好不要只使用while(true)
循环,而应使用类似while(read != 0)
最后,您应关闭扫描仪以防止损坏。在这个程序中它不会造成太大的伤害,但这并不意味着你可以忘记它。
import java.util.Scanner;
public class SumOfMultipleNumbers {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int sum = 0;
int read;
do {
sum += read;
System.out.println("Sum now: " + sum);
read = Integer.parseInt(reader.nextLine());
} while (read != 0)
System.out.println("Sum in the end: " + sum);
reader.close();
}
}