我正在尝试创建一个数据验证器来确认我有一个整数,以及一个0到4之间的整数。我当前的代码卡在嵌套的If Else语句中的循环中,我无法弄清楚原因。任何帮助表示赞赏。
Scanner in = new Scanner ( System.in);
int lives;
lives = 0;
boolean isNumber;
do {
System.out.println ( "How many lives do you currently have? (Max. 4): " );
if ( in.hasNextInt() ) {
lives = in.nextInt();
if (lives > 4){
System.out.println ( "Please try again. Number must be between 1 and 4" );
isNumber = false;
in.next ();
}
else {
lives = in.nextInt();
isNumber = true;
}
}
else {
System.out.println ( "Please try again. Number must be between 1 and 4" );
isNumber = false;
in.next ();
}
}
while (! (isNumber ) );
答案 0 :(得分:2)
试试这个
Scanner in = new Scanner(System.in);
int lives = 0;
boolean isNumber = false;
do {
System.out.println("How many lives do you currently have? (Max. 4): ");
if (in.hasNextLine()) { // when enter key has been hit
try {
lives = Integer.parseInt(in.nextLine().trim());
if (lives < 1 || lives > 4) {
System.out.println("Please try again. Number must be between 1 and 4");
isNumber = false;
} else {
isNumber = true;
}
} catch (NumberFormatException e) {
//Report your error here to the user
System.out.println("Please enter a number");
isNumber = false;
}
}
} while (!(isNumber));
答案 1 :(得分:0)
尝试查看Why does hasNextLine() never end?,看看in.hasNextLin()是否与in.hasNextInt()
相同