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+"身份證非法");
}
}
}