现在我们正在学习while循环-这是一个挑战。程序应该反复提示用户输入一个数字。记录用户输入的总数,并记录用户输入的条目数。当用户输入非整数时,程序应该停止。当用户输入完毕后,打印用户输入的条目数及其总和。">
"与此程序的交互示例可能如下所示:程序:输入一个整数来继续,或者输入一个非整数值来完成。然后按回车键
用户:2
程序:输入一个整数继续或一个非整数值结束。然后按回车键
用户:6
程序:输入一个整数继续或一个非整数值结束。然后按回车键
用户:89
程序:输入一个整数继续或一个非整数值结束。然后按回车键
用户:q
程序:您输入了3个整数。你的参赛作品的总和是97。">
这是我到目前为止写的。
import java.util.Scanner;
public class InputSequence
{
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int sum = 0;
int total = 0;
while (scan.hasNextInt())
{
scan.next();
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = input + input;
total = total + 1;
}
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}
}
我只是有点困惑,因为我的交互似乎在while循环中每隔第二次跳过system.out.println,然后不将第一次输入计入总数。我相信总和也不总是算对的。同样,如果我输入了很多整数,然后输入一个非整数来结束程序,我将收到一个错误而不是结束消息。然而,假设我先输入两个整数,然后输入一个字符串,我将得到结束消息。
您的问题是scan.next()
的用法可以删除,并且应该正确显示System.out.println
。
.next()
方法是nextInt()
的一个泛型方法,它返回一个String
代替。
你可以做的另一件事是从while
循环切换到do while
,以防止重复这一行两次:
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
的例子是:
Scanner scan = new Scanner(System.in);
int sum = 0;
int total = 0;
do {
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = sum + input;
total = total + 1;
} while (scan.hasNextInt());
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}