Java 为什么我有一个永无止境的do-while循环?
我有一个不工作的Java 为什么我有一个永无止境的do-while循环?,java,loops,do-while,Java,Loops,Do While,我有一个不工作的do while循环。当我输入一个字符串而不是int时,它应该说“bla”并再次要求插入一个数字,但它会一次又一次地发送消息文本。这个代码有什么问题 boolean i = true; do { i = false; try { System.out.println("insert number"); int k = sc.nextInt(); } cat
do while
循环。当我输入一个字符串而不是int时,它应该说“bla”并再次要求插入一个数字,但它会一次又一次地发送消息文本。这个代码有什么问题
boolean i = true;
do {
i = false;
try {
System.out.println("insert number");
int k = sc.nextInt();
}
catch(InputMismatchException e) {
System.out.println("test");
i = true;
}
} while ( i== true);
您需要在
catch
块中执行sc.nextLine()
,以清除错误的输入。如果输入与int模式不匹配,则调用会将其保留在缓冲区中。您需要在catch
块中执行sc.nextLine()
,以清除错误的输入。如果输入与int模式不匹配,则调用会将其留在缓冲区中。请参阅:当扫描器抛出InputMismatchException时,扫描器不会传递导致异常的令牌,因此可以通过其他方法检索或跳过它。
。因此,您需要在获得InputMismatchException
后跳过令牌。请参阅:当扫描仪抛出InputMismatchException时,扫描仪将不会传递导致异常的令牌,以便可以通过其他方法检索或跳过它。
。因此,一旦您获得输入不匹配异常
,您就需要跳过令牌。这真的很有帮助:D非常感谢!提示:我已经是一个布尔值了,所以你不需要(i==true)。相反,我用的是while,这真的帮了我:谢谢你!提示:我已经是一个布尔值了,所以你不需要(i==true)。而是使用while(i)。