Java扫描器实用程序不允许用户在循环中重新输入输入



只是试图用几个实践程序来包装我的Java编码,我正在试验循环和扫描仪实用程序,当试图使用扫描仪检查是否输入了正确的输入并让程序循环直到输入正确的输入时,刚刚遇到了一个问题。

import java.util.Scanner;
public class Calculator {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int numbOne;
        boolean checker;
        System.out.println("please enter an Interger");
        do{
            if(s.hasNextInt()){
                numbOne = s.nextInt();
                System.out.println("Yay it worked!!!"); 
                checker = true;
            }
            else{
                System.out.println("I told you to enter an integer you idiotnTRY AGAIN!!!!!!");
                checker = false;
            }
        }
        while(checker == false);
    }
}

基本上应该发生的事情是,一旦程序进入循环,它要求用户输入一个整数,如果用户输入一个整数,它显示消息"耶!它工作了!!"并跳出循环,然而,如果用户输入一个字符串或任何其他值,那么代码循环,应该再次要求输入。

然而,我遇到的问题是,程序只要求输入一次,如果输入了错误的输入,那么程序只是一遍又一遍地循环else语句,而不要求用户再次输入。

知道我做错了什么吗?

您需要使用下一个令牌。尝试在else-block中调用s.next()

基本上'hasNextInt()'方法是一个peek方法,但它永远不会使用该输入,因此会一直查看相同的输入。

最新更新