我正在尝试使用do-while循环来获取ArrayList的信息,但我得到了以下输出:
请输入您的号码(键入一个字母完成): 3. 请输入您的号码(键入一封信以完成): 请输入您的号码(键入一个字母完成):
但操作成功,ArrayList按预期包含所有三个数字(2、3、4),即使没有为其中之一打印提示符
do {
num = getNumber("Please input your number (type a letter to finish): ");
data.add(num);
} while (console.hasNextInt());和getNumber方法
public static int getNumber(String prompt) {
System.out.print(prompt);
return console.nextInt();
}如何让它打印所有数字的提示?
发布于 2017-03-10 20:34:21
您的主要问题是在nextInt()之前调用hasNextInt()。
你需要做它的other way around。
通常,nextInt()只消耗等待使用hasNextInt()的数据,但是如果没有以这种方式接收数据,nextInt() 本身就会阻塞。这就是导致你的问题的原因。
查看程序的控制流:
getNumber被称为prompt打印nextInt()块getNumber返回hasNextInt()块用于输入。
这里是问题,您的程序再次等待输入,但是没有新的提示符有机会被打印!nextInt()只消耗步骤5中等待的int。hasNextInt()之前通常的nextInt()模式,因此您的程序从这一点开始按照预期的方式运行。https://stackoverflow.com/questions/42726583
复制相似问题