有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我最初没有提交任何东西,因为这本书(Y Daniel Liang的《Java编程入门》)和我的导师在讨论将双精度转换为字符串并验证其格式时没有真正的意义

我希望YouTube、谷歌或其他来源能帮我解决这个问题;然而,解决方案包括“Regex”和其他我们尚未接近讨论的实用程序。周二,我将对任何我无法复制和解释的东西获得F,因此,真正深入、老练的解决方案在这里是不可能的

有什么建议可以帮助我快速地加快字符串的简单验证/转换速度吗


共 (1) 个答案

  1. # 1 楼答案

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