package zyntm;
import java.util.Scanner;
public class Users {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int j = 0;
int[] arr = new int[3];
for (int i = 0; i < 3; i++) {
while(true) {
if (s.split("-")[i].charAt(j)>='0'&&s.split("-")[i].charAt(j)<='9')
arr[i]++;
else
break;
j++;
}
}
if (arr[0]==3&&arr[1]==2&&arr[2]==4)
System.out.println(s + "是一个合法的社保号");
else
System.out.println(s + "是一个不合法的社保号");
}
}
哪里有问题?如何修改?
你这个输入如果少-
分割就会报数组越界异常,如果多出-
比如 DDD-DD-DDDD-DD 这种你也会认为是合法的,如果不采用楼上那种正则的方式,你需要先判断-分割之后数组大小是否为3,然后对数组中的每个字符串进行校验
这个直接正则表达式匹配下就可以了 \d{3}\-\d{2}\-\d{4}