大家好。我正在学习java中的异常处理。有ArrayList,它在一个无限循环中接受来自用户的数字,这些数字被添加到ArrayList. 我想捕获一个异常,以便在输入非int值时,循环不会停止,而只是显示一条消息"Only ints!",之后用户可以继续输入数字。但实际上,当你输入 not 时int,就会开始无休止的输出消息。我认为continue这个问题会得到解决,但由于某种原因它不起作用。请告诉我为什么以及如何解决它?
public class Exceptions3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
while (true){
try{
list.add(scanner.nextInt());
}
catch (InputMismatchException e){
System.out.println("Only ints!");
continue;
}
}
}
}
当扫描器在尝试执行
nextInt()时检测到输入流不是数字时,它会抛出异常并且不会从输入流中读取该非数字。结果,下次它尝试读取一个数字时,扫描器将再次尝试读取相同的非数字并再次抛出异常。为了让扫描器确定它无法识别的内容并继续处理输入流的下一个元素,您需要另外放置.catchscaner.next();在
continue您的示例中,这根本不重要。它只是将控制权转移到循环的开头,在 block 完成后执行catch。continue应该在循环体中的其他内容需要跳过时使用。