扫描仪输入验证Java
这是我的密码。我想确保它不会抛出异常,并不断要求用户输入正确的整数输入格式。但它一直在进入一个无限循环。Add扫描仪输入验证Java,java,java.util.scanner,Java,Java.util.scanner,这是我的密码。我想确保它不会抛出异常,并不断要求用户输入正确的整数输入格式。但它一直在进入一个无限循环。Addinput.nextLine()到您的else块 这将允许您将下一个值放入缓冲区,而不是陷入无限循环。我认为正确的解决方案是: while(!isValid){ System.out.println("Enter house number: "); if(input.hasNextInt()){ houseNum=input.nextInt();
input.nextLine()代码>到您的else
块
这将允许您将下一个值放入缓冲区,而不是陷入无限循环。我认为正确的解决方案是:
while(!isValid){
System.out.println("Enter house number: ");
if(input.hasNextInt()){
houseNum=input.nextInt();
isValid=true;
}
else{
System.err.print("Wrong input. Try again");
isValid=false;
}
}
无论读取数字是否成功,我都会从输入中跳过一行。如果没有读取数字,则跳过整个错误行;如果读取了一个数字,它只会跳过该数字后面的换行。删除布尔标志。使用while(input.hasNextInt()
然后使用input.nextInt()
hasNextInt())
正是这样做的……确保用户已经输入了一个有效的整数。无需对其进行验证。@LostMind and GhostCat我明白你的意思。但是,如果用户收到错误的输入,我希望它要求用户再次输入。
while (!isValid) {
System.out.println("Enter house number: ");
if (input.hasNextInt()) {
houseNum = input.nextInt();
isValid = true;
}
else {
System.err.print("Wrong input. Try again");
isValid = false; // not really necessary; isValid was already false
}
input.nextLine();
}