在Java中验证字符串/双精度的初学者方法

时间:2019-10-20 23:21:40

标签: java

我参加了“ Java编程入门”课程的第7周。第5周的作业是: “写一个程序,提示用户以DDD-DD-DDDD格式输入社会安全号码,其中D是数字(0-9)。您的程序应检查输入是否有效。”

由于这本书(Y Daniel Liang撰写的“ Java编程简介”),我本来一无所有,并且我的老师在讨论将双精度转换为字符串并验证其格式时没有任何意义。

我希望YouTube,Google或其他来源能够帮助我解决这个问题;但是,解决方案包括“ Regex”和其他尚未讨论的实用程序。对于任何我无法复制并在周二解释的问题,我都会得到一个F。因此,真正深入,资深的解决方案不在这里。

关于我如何快速掌握字符串的简单验证/转换的任何建议?

1 个答案:

答案 0 :(得分:0)

您可以使用 for 循环和几个 if 语句(很长一段时间)来执行此操作。您肯定要在 if 语句条件内使用Character.isDigit()方法。

您需要一次遍历用户提供的SSN字符串一个字符,因此在这里使用String.charAt()方法也很重要。这是您可能会采用的一种方法:

Scanner input = new Scanner(System.in);
String inputSSN = "";

while (inputSSN.equals("")) {
    System.out.print("Enter a Social Security Number: --> ");
    inputSSN = input.nextLine();

    // Validate SSN...
    for (int i = 0; i < inputSSN.length(); i++) {
        // Validate the first set of 3 digits
        if (i >= 0 && i <= 2) {
            if (!Character.isDigit(inputSSN.charAt(i))) {
                inputSSN = "";
                break;
            }
            continue;
        }

        // Validate the first hyphen
        if (i == 3 && inputSSN.charAt(i) != '-') {
            inputSSN = "";
            break;
        }

        // Validate the second set of 2 digits
        if (i >= 4 && i <= 5) {
            if (!Character.isDigit(inputSSN.charAt(i))) {
                inputSSN = "";
                break;
            }
            continue;
        }

        // Validate the second hyphen
        if (i == 6 && inputSSN.charAt(i) != '-') {
            inputSSN = "";
            break;
        }

        // Validate the third set of 4 digits
        if (i >= 7 && i <= 10) {
            if (!Character.isDigit(inputSSN.charAt(i))) {
                inputSSN = "";
                break;
            }
        }
    }

    // Validate that the SSN is the right length
    if (inputSSN.length() != 11) {
        System.out.println("Invalid Social Security Number!" + System.lineSeparator());
        inputSSN = "";
    }
}

System.out.println(inputSSN + " is a valid Social Security Number.");