当条件设置为false时,执行/循环循环

时间:2018-03-07 21:49:22

标签: java loops methods java.util.scanner

如果遇到错误,这个do / while循环将无限循环,即使在每个循环后错误设置为false ...我不知道如何解释它。

import java.util.Scanner;

public class ErrorChecking {

    public static int inputInt(Scanner input, String console) {

        int finalInt = 0;
        int num;
        boolean error = false;

        do {
            error = false;
            System.out.print(console);
            if(input.hasNextInt()) {
                num = input.nextInt();
                String numDuplicate = Integer.toString(num);
                int numLength = numDuplicate.length();
                if(numLength == 8) {
                    finalInt = num;
                    error = false;
                } else {
                    System.out.println("Invalid input. ID needs to be 8 digits long. Please try again.");
                    error = true;
                }
            } else {
                System.out.println("Invalid input. ID needs to be 8 numbers. Please try again.");
                error = true;
            }
        } while(error);

        return finalInt;

    }

}

1 个答案:

答案 0 :(得分:2)

如果input.hasNextInt()永远返回false,那么你的循环将永远运行,因为你没有做任何事情来推进输入,它会在每次迭代时返回false。我的猜测(没有关于你的程序行为的更多细节)是这是正在发生的事情。

您需要以某种方式消耗当前输入以清除错误情况。这样做的逻辑取决于您期望作为输入的内容。