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

Java Scanner实用程序不允许用户在循环中重新输入输入,java,loops,java.util.scanner,do-while,Java,Loops,Java.util.scanner,Do While,我只是想通过一些实践程序来理解Java编码,我正在尝试循环和scanner实用程序,但在尝试使用scanner检查输入是否正确,并让程序循环直到输入正确的输入时遇到了问题 import java.util.Scanner; public class Calculator { public static void main(String[] args) { Scanner s = new Scanner(System.in); int numbOne;

我只是想通过一些实践程序来理解Java编码,我正在尝试循环和scanner实用程序,但在尝试使用scanner检查输入是否正确,并让程序循环直到输入正确的输入时遇到了问题

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 idiot\nTRY AGAIN!!!!!!");
                checker = false;
            }
        }
        while(checker == false);

    }

}
基本上应该发生的是,一旦程序进入循环,它会要求用户输入一个整数,如果用户输入一个整数,它会显示消息“Yay it worked!!!”并跳出循环,但是如果用户输入一个字符串或任何其他值,那么代码会循环并再次要求输入

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


知道我做错了什么吗?

你需要使用下一个代币。尝试在else块中调用
s.next()


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

如果您不想退出循环,为什么要将
checker
设置为
true