//身份證字號確認 import java.io.*; public class a09{ public static void main(String args[]) throws Exception { //程式進入點 String getbr; BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); int checksum1, checksum2,checksum,i; int area; /*****請使用者輸入身份證字號**********/ do { System.out.print("請輸入身份證字號:"); getbr = br.readLine(); if (getbr.equals("0")) //判斷結束 { System.out.println("結束!"); return; } if (getbr.length()!=10) //判斷結束 { System.out.println("請輸入正確的長度"); continue; } getbr=getbr.toUpperCase();//轉成大寫 char[] id=getbr.toCharArray();//轉字元陣列 /*計算(2)*/ if (id[0]=='A') area=10; else if (id[0]=='B') area=11; else if (id[0]=='C') area=12; else if (id[0]=='D') area=13; else if (id[0]=='E') area=14; else if (id[0]=='F') area=15; else if (id[0]=='G') area=16; else if (id[0]=='H') area=17; else if (id[0]=='I') area=34; else if (id[0]=='J') area=18; else if (id[0]=='K') area=19; else if (id[0]=='L') area=20; else if (id[0]=='M') area=21; else if (id[0]=='N') area=22; else if (id[0]=='O') area=35; else if (id[0]=='P') area=23; else if (id[0]=='Q') area=24; else if (id[0]=='R') area=25; else if (id[0]=='S') area=26; else if (id[0]=='T') area=27; else if (id[0]=='U') area=28; else if (id[0]=='V') area=29; else if (id[0]=='W') area=32; else if (id[0]=='X') area=30; else if (id[0]=='Y') area=31; else if (id[0]=='Z') area=33; else area=0; checksum1=(area%10)*9+area/10; /****計算 (3) (4)****/ checksum2=0; for (i=1;i<9;i=i+1) checksum2=checksum2+Character.digit(id[i],10)*(9-i); /****計算(5)****/ checksum=10-((checksum1+checksum2)%10); checksum=checksum%10; /***判斷檢查碼 ****/ if (checksum==Character.digit(id[9],10)) System.out.println("正確"); else System.out.println("錯誤"); } while (true); } }