我正在尝试验证输入,以便仅允许用户输入具有9位数字的int。我当前的代码处理的是前导零,即大于9位的任何输入,但小于9位的则为空。
例如,它不应允许用户输入int 123。
下面的代码在数字长于9的情况下验证数字输入,但未考虑数字短于9的情况。
public void setSSN(int sSN) {
String temp = "";
do {
temp = String.format ("%09d", sSN);
if(temp.length() != 9) {
sSN = Methods.getInt("Enter an 9 digits");
}
}while(temp.length() != 9);
temp = temp.substring(0,3) + "-" + temp.substring(3,5) + "-" +temp.substring(5,9);
JOptionPane.showMessageDialog(null, temp);
SSN = sSN;
}
如果用户输入的int少于9位数字。由于String.format,它将填充其余的插槽并使其变为9位(我仅包括此位,因此它适用于前导零)。我不确定如何解决前导零以及确保输入正好是9位数字。
测试案例:
输入:123456789 输出:123-45-6789
输入:001234567 输出:001-23-4567
//下面是我不想要的
输入:12
输出:000-00-0012
答案 0 :(得分:0)
要确定某人没有输入“ 000000123”吗?然后只需执行循环以将输入解析为数组并检查每个索引的值,并确保在索引0-3中没有输入重复的数字值(这将覆盖前四个索引)
答案 1 :(得分:0)
使用.length检查输入字符串的长度。如果string.legnth <9 {cout <<“对不起。请输入9个数字”}
或者类似的东西。