尝试抓到时

时间:2018-06-23 09:16:31

标签: java loops java.util.scanner do-while

我陷入了无限循环...应该要求用户再次输入。 请帮助

public class Example {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int num = 0;
        do {
            try {
                System.out.print("Enter number : ");
                num = input.nextInt();
            } catch (Exception e) {
                System.out.println("Enter number only !!!");
            }
        } while (num != 5);
    }

}

6 个答案:

答案 0 :(得分:2)

发生这种情况是因为您要比较NON-Number与while(num!= 5)中的数字。由于Exception的原因,另一个输入没有从用户那里获取,并且先前的NON-Number输入被保存到num变量中,因此无限次出现Exception并执行catch(){}。

答案 1 :(得分:0)

要退出do-while循环,您需要输入数字5

答案 2 :(得分:0)

我没明白你要做什么。你做的事情应该是什么意思?无论如何,如果要检查用户输入的数字是否为NUMERIC而非非数字,则应该

System.out.print("Enter Number ");  
Scanner input = new Scanner(System. in);  

try {   
String str = input.next();  
int x=  Integer.parseInt(str);         

}  
catch(Exception e) {  
 System.out.print("Type a Number, Not String");               
}

答案 3 :(得分:0)

基本上,当您对num = input.nextInt();之类的非数字输入执行a时,扫描器a中的缓冲区仍然存在,因为它未被读取,并且可用于使用do-while进行的下一次扫描。因此,您将进入无限循环。

通过清除捕获中带有input.nextLine的输入缓冲区来解决该问题。

catch (Exception e) {
    System.out.println("Enter number only !!!");
    input.nextLine();
}

请参阅@Ojasvi的参考

答案 4 :(得分:0)

您没有增加 num ,因此它将永远保持 0 ,并且会出现无限循环

答案 5 :(得分:0)

尝试一下:

因为您错过了将num = input.nextInt();放入catch块的操作。 再将一件事保留在循环中,直到您将输入数字指定为5。

public class Example {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int num = 0;
        do {
            try {
                System.out.print("Enter number : ");
                num = input.nextInt();
            } catch (Exception e) {
                System.out.println("Enter number only !!!");
                num = input.nextInt();
            }
        } while (num != 5);
    }

}