我正在尝试添加以下扫描仪验证,如下所示;

public void promptFilmRating() {
    while (!filmScanner.hasNextInt()) {
        System.out.println("Please enter a number instead of text.");
        filmScanner.next();
    }
    while (filmScanner.nextInt() > 5 || filmScanner.nextInt() < 1) {
        System.out.println("Your number is outside of the rating boundaries, enter a number between 1 and 5.");
        filmRatingOutOfFive = filmScanner.nextInt();
    }

}


但是,当使用与值验证之间的整数相关的代码时,需要重复输入才能记录原始输入,而且我不确定如何更正此错误,任何建议都很棒。

最佳答案

我相信您的问题出在while (filmScanner.nextInt() > 5 || filmScanner.nextInt() < 1) {上。
每次对filmScanner.nextInt()的调用都会向流请求一个新的整数,因此,在while语句中两次调用.nextInt()时,您将要求两个数字。

您可能要考虑将两个循环合并为一个。
例:

int myNum;
do {
    myNumb = filmScanner.nextInt();
} while (myNum > 5 || myNum < 1);

10-05 21:26