最后一位可以是数字或者大写字母X。
public static void main(String[] args) { Scanner scanner = new Scanner(System.in) ; System.out.println("请输入您的身份证号码: "); String line = scanner.nextLine(); boolean flag = judgeString(line); System.out.println("输入的身份证号是否合法: " + flag); } private static boolean judgeString(String line) { // 不是18位数 if (line.length() != 18) { return false ; } // 以0开头 if (line.charAt(0) == '0'){ return false ; } for (int i = 0; i < line.length(); i++) { char ch = line.charAt(i); // 最后一位数 if (i== line.length()-1){ if (ch<'0' || ch>'9' && ch != 'X'){ return false; } }else { // 前17位数 if (ch<'0' || ch>'9'){ return false ; } } } // 全部规则都符合 return true ; }