这是我正在为一个更大的项目编写的代码片段:
import java.util.Scanner;
public static void getZip() {
boolean shallNPass=true;
int zip=0;
System.out.print("Enter zipcode: ");
while(shallNPass) {
if(in.hasNextInt()) {
zip = in.nextInt();
if(zip>999 && zip<100000)
zip = in.nextInt();
else {
System.out.println("Incorrect length for a zip. Try again");
System.out.print("Enter zipcode: ");
continue;
}
shallNPass = false;
}
else {
System.out.println("Invalid Entry. Please use an integer.");
System.out.print("Enter zipcode: ");
continue;
}
shallNPass = false;
} shallNPass = true; //RESETTING SHALLNPASS
System.out.println(zip);
//In actuality I continue to do another similar while loop similar after this
//but I don't want to make this longer, so used a print
}
它基于我在这里找到的关于验证用户输入某种类型的值的解决方案。我只是更进一步,尝试验证输入的值是否在 1000 和 99999 之间。
我遇到的问题是,在输入正确长度的整数后,我必须再次输入它才能让程序继续执行下一行代码。我在验证类型时没有这个问题,只是在添加长度时才遇到这个问题。
我该如何解决这个问题?我已经尝试了各种 continue、break 和嵌套循环的技巧,但我只是没有看到它。
最佳答案
我在这里看到您再次要求:
if (in.hasNextInt()) {
zip = in.nextInt(); // asking for input once
if (zip > 999 && zip < 100000) {
zip = in.nextInt(); // if validates, you're asking for input again
} else {
System.out.println("Incorrect length for a zip. Try again");
System.out.print("Enter zipcode: ");
continue;
}
shallNPass = false;
}
重构你的 if-else block :
if (zip <= 999 || zip >= 100000) {
System.out.println("Incorrect length for a zip. Try again");
System.out.print("Enter zipcode: ");
continue;
}
如果未正确验证,则只需再次提示即可;因此,您不需要 else
。
关于java - 在 Java 中验证输入类型和整数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844050/