Try-catch仅循环一次

时间:2017-03-20 23:13:12

标签: java try-catch

我有一个try-catch,用于捕获任何不是整数的东西。当我输入一个非整数(例如5.6)时,它告诉我只允许整数,让我再试一次(应该这样)。但如果我再次输入一个非整数,它就不会说任何东西,并且会继续输入,使输出空白。

textConnection

4 个答案:

答案 0 :(得分:4)

try/catch语句不是循环。它将始终执行一次。

当然,如果try块中有一个循环,那么该块将一直执行直到终止。但是这样的循环需要使用像whilefor这样的显式命令。

显然,输入非整数值(例如5.6)时会发生nextInt()语句抛出异常并转到catch块。如果提供了该方法的完整代码,则可以给出更好的解释。

答案 1 :(得分:3)

为此你可以定义一个函数,这样的东西应该可以工作

private int getNextInt(Scanner input) {
    boolean isInt = false;
    int userInput;
    while(!isInt) {
        try {
            userInput = Integer.valueOf(input.next());
            isInt = true;
        } catch(NumberFormatException e) {
            // Do nothing with the exception
        }
    }
    return userInput;
}

这应该运行,直到给定的输入为int,然后返回所述int

答案 2 :(得分:1)

您可以将代码更新为类似的内容 -

    Scanner in = new Scanner(System.in);
    int num = 0;
    while(true) {
        try{
            num = in.nextInt();
            break;
        }catch(Exception e){
            //print statements
            System.out.println("Try again");
        }
    }
    System.out.println("Done");

答案 3 :(得分:1)

类似这样的事情

Boolean check = true;

while(check){ 如果choicesObjects == b {

在此输入代码`System.out.println(" TEST 2");                 System.out.println("对象:右三角");                 System.out.println(" \ n输入直角三角形的长度:");

            int lengthOfTriangle = 0;

            try {

            lengthOfTriangle = input.nextInt();


            } catch(InputMismatchException e) {

                System.out.println("\nError: user input must be an integer greater than 0.\n");
                check = false;

System.out.println(" Object:Right triangle"); System.out.println(" \ n输入直角三角形的长度:");                     input.next();

            }
               //method stuff
          }
        } 

`