【发布时间】:2019-10-05 08:37:05
【问题描述】:
我正在尝试验证输入,以便只允许用户输入具有 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
【问题讨论】:
-
能否提供几个测试用例。输入和输出@Truong Nguyen
-
@pie 添加了测试用例
-
你不能在格式化之前验证输入的长度吗?
-
@AmitDas no 因为 int 不存储前导 0。所以如果用户输入 012345678,它只会存储 12345678(8 位)。这是我遇到的问题。
标签: java validation