我需要编写一个程序,要求整数和循环,直到输入为负整数,然后程序将结束。此外,循环需要计算正整数条目的总数,并将所有条目相加。代码的计数部分似乎工作正常,但我获取所有条目总和的方法不起作用。
我在代码中尝试的是将 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);