Java:让用户输入整数未正确求和条目的循环



我需要编写一个程序,要求整数和循环,直到输入为负整数,然后程序将结束。此外,循环需要计算正整数条目的总数,并将所有条目相加。代码的计数部分似乎工作正常,但我获取所有条目总和的方法不起作用。

我在代码中尝试的是将 total=total+input 放在循环的末尾,但这在测试时没有给出正确的总和。

此外,我的类型安全块仅适用于第一个条目;如果我在整数后输入一个字母,它会使程序崩溃。难道不应该循环回每个条目开头的类型安全块吗?

我在底部粘贴了我的输出副本。

任何帮助将不胜感激。

int count   =   0;
int total   =   0;
Scanner scan = new Scanner(System.in);
System.out.print( "Enter an integer, negative to quit: " );
while(!scan.hasNextInt())
{
scan.nextLine();
System.out.println( "That is not an integer." );
System.out.println( "Please enter an integer." );
}
int input = scan.nextInt();
while (input >= 0)
{
System.out.print( "Next integer: " );
input = scan.nextInt();
count++;
total   =   total + input;
}
System.out.println( "Count: " + count ); 
System.out.println( "Total: " + total );

当我运行代码时,我得到以下输出:

跑:

输入一个整数,负数退出:h

这不是一个整数。

请输入一个整数:

1

下一个整数:2

下一个整数:3

下一个整数:-1

计数:3

共:4

条构建成功(总时间:10 秒)

交换操作顺序。首先求和并计数,然后得到一个新输入:

while (input >= 0) {
total = total + input;
count++;
System.out.print("Next integer: ");
input = scan.nextInt();
}

您当前的代码会丢弃第一个输入1,并使用第二个输入2开始求和计数。

您需要检查每次迭代的下一个条目是否为integer。 另外,在请求下一个之前,您需要对初始integer求和:

int input = 0;
int count = 0;
int total = 0;
do{
System.out.print("Enter an Integer: ");
total += input;
if(!scan.hasNextInt()) {
scan.nextLine();
System.out.println( "That is not an integer." );
input = 0;
} else {
input = scan.nextInt();
count++;
}
} while(input >= 0);
System.out.println("Count: " + (count - 1));
System.out.println("Total: " + total);

最新更新