Java 检查用户是否输入了整数

Java 检查用户是否输入了整数,java,Java,我正在编写一个命令行程序,希望用户输入一个有效的年龄(整数)。通过使用Scanner类,我有如下内容: int getAge() { Scanner = new Scanner(System.in); int age; boolean isValid = false; while(!isValid) { System.out.println("Please enter your age"); if (myScanner.hasNext()) {

我正在编写一个命令行程序,希望用户输入一个有效的年龄(整数)。通过使用Scanner类,我有如下内容:

int getAge() {
   Scanner = new Scanner(System.in);
   int age;
   boolean isValid = false;

   while(!isValid) {
      System.out.println("Please enter your age");
      if (myScanner.hasNext()) {
        if (myScanner.hasNextInt()) {
           age = myScanner.nextInt();
           isValid = true;
        } else {
           System.out.println("Please enter an integer");
        }
      }
   }

   return age;
} 

问题在于,在循环中,它一直在读取输入,而不等待新值。我该如何解决这个问题?

您没有在
else
路径中读取任何令牌,因此一遍又一遍地处理相同的输入。只需添加以下行

myScanner.next();

else
-块中。

您也可以使用类似的内容。要使用
BufferedReader
读取整行,请解析字符串中的整数并捕获可能发生的任何异常

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
int intVal;
try {
  intVal = Integer.parseInt(s);
}
catch(NumberFormatException nfe) {
  //Do Something
}
你可以把这个放在你的循环里。(是的,我知道它不使用扫描仪……只是想展示一种替代方法。)