java验证整数并将其设为5位数
我正在上我的第一堂java课。我需要一个邮政编码。我知道如果他们不输入5位数字,如何要求新的输入,但如果他们输入非整数,我又如何要求新的输入
以下是我所拥有的:
import java.util.Scanner;
public class AndrewDemographics {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int zip; // 5 digit zip
System.out.print("Enter your 5 digit zip code: ");
zip = stdIn.nextInt();
while ((zip < 10000) || (zip > 99999)) {
// error message
System.out.println("Invalid Zip Code format.");
System.out.println("");
System.out.println("Enter your 5 digit zip code: ");
zip = stdIn.nextInt();
} //end if zip code is valid
}
}
# 1 楼答案
在前面的示例中,邮政编码前导零存在问题。需要检查两者是否都是数字,长度是否为5个字符。如果以数字类型读入,则零前导zip的长度为4位
我的头顶:
# 2 楼答案
我使用
nextLine()
而不是int将输入作为字符串,因为它包含以0开头的邮政编码,而邮政编码虽然以数字形式编写,但实际上并不是一个数字值。我觉得构造if/else语句以确定邮政编码是否有效的最简单方法是使用返回语句,该语句将在返回时中断检查,因此我编写了一个检查邮政编码有效性的方法:那么,主要方法如下所示:
# 3 楼答案
要支持以
0
开头的邮政编码,您需要将邮政编码存储在字符串中,然后使用正则表达式最容易对其进行验证:如果要打印错误消息,可以这样做,它使用
nextLine()
,因此只需按enter键也将打印错误消息:# 4 楼答案
正如评论所建议的,您需要考虑从零开始的邮政编码。我想,你需要把输入看作一个字符串:
String
是否有5个字符长(以匹配5位数字)String
不包含+
符号,因为+1234
将起作用String
是否为有效整数Integer
是否为正值,因为-1234
仍然有效在实践中