while while循环提示用户输入一些内容

时间:2018-04-07 13:44:12

标签: java do-while

我是新手做的循环。

我试图创建一个do-while循环来检查用户输入是整数还是字符x。如果它既不提示用户再试一次。

循环反而提示用户两次:

预期输出:

Enter answer:
500
//program is succesful

实际输出:

Enter answer:
500
//prompts user for more input

代码:

    do {
        System.out.println("Enter answer: ");
        input = scan.next();
        if(input.trim().equals("x"))
        {
            terminate = false;
            break;
        }
        while (!scan.hasNextInt()) {
            input = scan.next();
            System.out.println(input + " is not a interger!!");
        }
        operationResult = scan.nextInt();
        valid = false;
    } while (valid);

2 个答案:

答案 0 :(得分:1)

你总是可以使用try...catch,但我认为这会更好 -

do{
    if(scan.hasNextInt()){
        operationResult = scan.nextInt();
        break;
    }else if(scan.next().trim().equals("x")){
        break;
    }else{
        System.out.println("Enter an Integer!!");
    }
}while(true);

它首先检查它是否为整数,因此不需要try...catch

答案 1 :(得分:0)

您可以使用以下给出: 它不会检查整数值,但它会检查输入的数值,这可能会有帮助

   public class SomeClass {
    public static void main(String args[]) {
        try (Scanner scan = new Scanner(System.in)) {
            do {
                String str = scan.next();
                if (isNumeric(str)) {
                    System.out.println("Program Ends");
                    break;
                } else if (str.equalsIgnoreCase("x")) {
                    System.out.println("Program Ends");
                    break;
                } else {
                    System.out.println("Enter Again");
                }
            } while (true);
        }
    }

    public static boolean isNumeric(String str) {
        return !str.matches(".*[^0-9].*");
    }
}