Java 检查用户是否输入了整数
我正在编写一个命令行程序,希望用户输入一个有效的年龄(整数)。通过使用Scanner类,我有如下内容: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()) {
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
}
你可以把这个放在你的循环里。(是的,我知道它不使用扫描仪……只是想展示一种替代方法。)