编程练习题4.21 ( 检查 SSN ) 编写一个程序, 提示用户输入一个社保号码, 它的格式是 DDD-DD-DDDD, 其中 D 是一个数字。 你的程序应该判断输入是否合法。

在校生初学Java,在看IntroductionToJavaProgramming(Java语言程序设计 基础篇 原书第10版)这本书时做到了书上这题,目前水平有限,做了出来,在这里做个Java练习笔记吧。感觉代码有些啰嗦,有不足之处还望大家在评论里交流指点。

 //先立个标志,方便处理输出
    boolean flag=false;
    while(true){
    Scanner input=new Scanner(System.in);
    //首次输入提示及出
        // 错后再次输入提示
    if(!flag) {
        System.out.println("Please enter a ssn:");
    }else{
        System.out.println("Please enter exactly again: ");
    }
    String ssn=input.nextLine();
    //首先判断输入的号码字符串的长度是否正确
    if(ssn.length()!=11){
        System.out.println("Invalid input length! ");
        //长度不符,修改flag标志的值
        flag=true;
        //就此止步,回头进行下一次while循环
        continue;
    }
    //再次立个标志,用于判断输入的号码格式是否完全正确
    int t=0;
    //进一步判断每个位置的字符格式是否正确
    for(int i=0;i<ssn.length();i++){
        if(i==3||i==6){
        if(ssn.charAt(i)!='-') {
            //格式错误,修改flag标志的值
            flag = true;
            //退出for循环
            break;
                      }
        }else if(!Character.isDigit(ssn.charAt(i))){
            //格式错误,修改flag标志的值
            flag=true;
            //退出for循环
            break;
            }
     //每判断一位字符格式正确就+1
        t++;
                   }
    //在for循环外判断标志t的是否等于输入的号码长度
    if(t==ssn.length()){
        System.out.print("Enter format correctly.");
        //正常退出程序
        System.exit(0);
    }
    //由flag值判断输出
    if(flag){
        System.out.println("Wrong input format!");
        //就此止步,回头进行下一次while循环
        continue;
    }
}

运行结果示例:
编程练习题4.21 ( 检查 SSN ) 编写一个程序, 提示用户输入一个社保号码, 它的格式是 DDD-DD-DDDD, 其中 D 是一个数字。 你的程序应该判断输入是否合法。_第1张图片

你可能感兴趣的:(Java编程练习题,java,编程语言)