代码之家  ›  专栏  ›  技术社区  ›  John Joe Mayank Nema

在try catch中执行[关闭]

  •  -3
  • John Joe Mayank Nema  · 技术社区  · 6 年前

    我在catch中得到了无限循环…它应该要求用户再次输入。 请帮忙

    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 回复  |  直到 6 年前
        1
  •  0
  •   John Joe Mayank Nema    6 年前

    要离开Do While循环,需要键入数字 5

        2
  •  2
  •   user1835899    6 年前

    发生这种情况是因为您正在比较一个非数字和一个while中的数字(num!=5)。由于异常,另一个输入不是从用户那里获取的,前一个非数字输入保存到“num”变量中,因此会发生无限次异常并执行catch()。

        3
  •  0
  •   Ojasvi Bhargava    6 年前

    我不明白你想做什么。当事情发生时,你会做什么?无论如何,如果您想检查用户输入的数字是否是数字而不是非数字,您应该这样做。

    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");               
    }
    
        4
  •  0
  •   HariUserX    6 年前

    基本上当你这样做的时候 num = input.nextInt(); 对于非数字输入,如 a ,扫描仪中的缓冲区 仍然存在,因为它没有被读取,它将可用于您正在调用的下一次扫描 do-while .所以,有一个无限循环。

    通过清除输入缓冲区 input.nextLine 抓住你。

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

    见@ojasvi参考

        5
  •  0
  •   Jamal Abbasi    6 年前

    您没有递增 号码 所以它将继续 0 永远都会有内环

        6
  •  0
  •   Mr. Roshan    6 年前

    试试这个:

    因为你被错过了 num = input.nextInt(); 进入你的接球区。 还有一件事,它会一直保持在循环中,直到您将输入的数字设为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);
        }
    
    }