首页 > 解决方案 > 在 Java 中验证字符串/双精度的初学者方法

问题描述

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

由于这本书(Y Daniel Liang 的“Java 编程简介”)和我的导师在讨论将双精度数转换为字符串并验证它们的格式时,我最初没有提交任何内容。

我希望 YouTube、Google 或其他来源能帮助我解决这个问题;但是,解决方案包括“Regex”和我们尚未接近讨论的其他实用程序。对于我无法复制和解释的任何事情,我都会在星期二得到一个 F,所以在这里,非常深入、经验丰富的解决方案是不可能的。

关于如何快速赶上简单的字符串验证/转换速度的任何建议?

标签: java

解决方案


您可以使用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.");

推荐阅读