这是因为当使用下一个int读取
nextInt()并且失败时,
Scanner仍然包含键入的内容。然后,当重新进入do-
while循环时,
input.nextInt()尝试再次使用相同的内容对其进行解析。
您需要使用以下
Scanner内容“冲洗” 内容
nextLine():
catch (Exception exc) { input.nextLine(); System.out.println("invalid number");}
笔记:
- 您可以删除该
counter
变量,因为您没有使用它。否则,你可以更换counter += 1
的counter++
。 - 可以替换
while (!(numbers.size() == 3))
使用while (numbers.size() != 3)
,甚至更好:while (numbers.size() < 3)
。 - 捕获异常时,除非您有充分的理由这样做,否则您应尽可能具体。在您的情况下
Exception
应替换为InputMismatchException
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)