Java扫描程序输入验证

时间:2017-12-16 20:25:31

标签: java validation input java.util.scanner

我试图只接受输入中的三个数字:1,2,3。除此之外的任何其他数字必须无效。我创建了方法,但我不知道为什么它不起作用。我必须改变什么?

int number;
do {
    System.out.println("Enter 1, 2 or 3");
    while (!scanner.hasNextInt()) {
        System.out.println("Invalid input!");
    }
    number = scanner.nextInt();
} while (number == 1 || number == 2 || number == 3)
return number;

1 个答案:

答案 0 :(得分:2)

你的循环逻辑

do {
    ...
} while (number == 1 || number == 2 || number == 3);
只要答案有效

就要求留在循环中。你想要改变你的状况:

do {
    ...
} while (!(number == 1 || number == 2 || number == 3));

或使用De Morgan's Law来反转各个组件:

do {
    ...
} while (number != 1 && number != 2 && number != 3);

此外,当Scanner的{​​{1}}返回hasNextInt时,您需要从扫描程序中取出无效输入,例如使用您忽略的false。否则你会得到一个无限循环:

nextLine