【问题标题】:How do I validate for leading zeros for an int?如何验证 int 的前导零?
【发布时间】: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


【解决方案1】:

所以要确保有人不输入“000000123”?然后只需执行一个循环将输入解析为数组并检查每个索引的值并确保在索引 0-3 中没有输入重复数字值(这将覆盖前 4 个索引)

【讨论】:

  • 不完全是。我不希望有人输入少于 9 位的数字。所以像 123 或 12345 或 1234 这样的输入并不理想。但只要它是 9 位数字,包括像 012345678 这样的前导零,它应该是好的。
  • 哦。正确的。对不起
【解决方案2】:

使用 .length 检查输入字符串的长度。 if string.legnth

或者类似的东西。

【讨论】:

  • 你不需要写另一个答案。您之前的答案下方有一个编辑按钮。按编辑。并在那里发布您当前的答案。 @香农格林
  • 哦。所以有。自从我来这里以来已经有一段时间了。谢谢
  • 我以前试过这个方法。如果输入的前导数为 0,这将不起作用,因为 int 不存储前导零,因此在转换为 String 时会丢失前导零。
猜你喜欢
  • 2012-11-10
  • 2014-10-23
  • 2014-09-09
  • 1970-01-01
  • 2019-04-14
  • 2023-01-18
相关资源
最近更新 更多