我正在为与菜单上的数字相对应的食品菜单创建数组列表。其中大部分被遗漏了:我的主要问题是错误消息不会在用户第一次不输入整数值时显示。按下回车键后控制台上不会显示任何内容,但如果我再次输入不是整数的内容,它将正常工作并显示错误消息。编辑:还有一点我应该注意的是,在代码的前面我使用了相同的扫描仪对象,所以使用 .next() 来清除它以前的值。 orderArray = new String[length]; menuDisplay(); int item; //the item number that user must enter for(int i=1; i<=length;i++) { System.out.println("Please choose item #"+ i+": "); scan.next(); while(!scan.hasNextInt()) //this while loop checks that an integer value has been entered { System.out.println("Please enter an integer value from the above menu."); scan.next(); } }
1 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
hasNextInt检查下一个令牌,而不是刚刚收到的令牌,所以总是在调用之前hasNextXxx() 先调用nextXxx()。
您还想实际获取整数值并将其分配给item.
像这样重新排列您的代码:
System.out.println("Please choose item #"+ i+": ");
while (!scan.hasNextInt()) //this while loop checks that an integer value has been entered
{
System.out.println("Please enter an integer value from the above menu.");
scan.next(); // skip bad token
}
item = scan.nextInt();
添加回答
举报
0/150
提交
取消
