我对这条线发表评论。为什么那条线不会再接受其他输入?然后继续重复,直到输入一个整数。
import java.util.*;
class ScanNumbers{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int[] NumberEntry = new int[6];
for (int i = 1; i < NumberEntry.length; i++){
boolean isInteger = false;
while (!isInteger){
try {
System.out.print("Entry " +i + "/5, enter an integer value: ");
NumberEntry[i] = scan.nextInt();
isInteger = true;
}
catch (Exception e){
System.out.print("Entry " +i + "/5, Please enter only an integer value: ");
NumberEntry[i] = scan.nextInt(); //Right here, I would like to ask again, why is this line not doing the job?
}
}
}
Arrays.sort(NumberEntry);
System.out.print("The max integer is: " + + NumberEntry[NumberEntry.length-1]);
}
}
我不能告诉它再试一次吗?
编辑1:哈哈,哦,我的,谢谢,我已删除了该行,但现在输出不断重复“输入1/5,输入一个整数值:”
编辑2:谢谢!现在工作正常!
答案 0 :(得分:5)
发生的事情是无效输入被保存在扫描仪中。您必须跳过输入,以便可以返回接受有效数据。如果不这样做,异常将一遍又一遍地被捕获。还有一种更简单的方法来做你想做的事情。试试这个:
try {
System.out.print("Entry " +i + "/5, enter an integer value: ");
NumberEntry[i] = scan.nextInt();
}
catch (Exception e){
scan.next();
i--;
continue;
}
这会跳过不需要的输入。它还会在同一次迭代中重新启动循环。