题目
题目概述
*4.21(检查SSN)编写一个程序,提示用户输入一个社保号码(格式是DDD-DD-DDDD,D是1个数字)你的程序应该判断输入是否合法
运行示例
Enter a SSN: 232-23-5435
232-23-5435 is a valid social security number
Enter a SSN: 23-23-5435
23-23-5435 is an invalid social security number
破题
该问题可以简化为:
判断输入的字符串格式是否为:三个数字-两个数字-四个数字
- 获取用户输入
- 判断长度是否符合要求(11位)
- 将每位分别转为char类型,再强转为int类型(ASCII码)
- 判断第4个、第7个int类型数值是否为45(’-'在ASCII码对应45)
- 判断其它int数值是否在’0’~'9’之间(即[45, 54])
- 如第4步、第5步均为是,则格式合法
代码
import java.util.Scanner;
public class Test4_21 {
public static void main(String[] args) {
// 获取用户输入
Scanner input = new Scanner(System.in);
System.out.println("Enter a SSN: ");
String str = input.next();
// 判断长度是否符合要求(11位)
int length = str.length();
if(length != 11){
System.out.println(str + " is an invalid social security number");
System.exit