18位身份证验证(Java)加入身份证输入验证是否满足18位代码(修订稿)

package day20181016;
/**
* 身份证的验证 34052419800101001X
*
*/
import java.util.Scanner;
public class ZuoYe04 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int[]numArray={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        System.out.println("请输入身份证号:");
        String card=input.next();
            while(true){
                System.out.println("请再输入一次身份证号:");
                    card=input.next();
                if(card.length()!=18){
                   System.out.println("您输入的身份证号有误,请重新输入");
                    System.out.println("是否继续(Y/N)");
                    String YN=input.next();
                if(YN.equals("Y")){
                    System.out.println("欢迎继续使用!");
                    continue;
                }
                if(YN.equals("N")){
                    System.out.println("感谢您的使用!");
                       break;
                }else{
                    System.out.println("您的输入有误,请重新输入");
                }
               }else{
                    break;
                }
           }
      int sum=0;
      for(int i=0;i<numArray.length;i++){
      int cardNum=card.charAt(i)-'0';
      sum+=cardNum*numArray[i];
      }
      System.out.println("前17位系数相乘和为:"+sum);
      //身份证18位的字符数组
      char[]codeArray={ '1','0','X','9','8','7','6','5','4','3','2'};
      int index=sum%11;//数组的下标
      //将计算出来的第18位字符与身份证的第18位对比
      if(codeArray[index]==card.charAt(17)){
      System.out.println(card+"身份证合法");
      }else{
        System.out.println(card+"身份证非法");
      }
    }
}                            

  

原文地址:https://www.cnblogs.com/SUN99bk/p/9821941.html