**************程式碼如下**************
import java.util.Scanner;
public class id
{
public static void main(String[] arg)
{
System.out.println("*****身分證驗證開始*****");
while (true) //無窮迴圈:假如輸入錯誤,重新輸入身分證字號
{
Scanner sc =new Scanner(System.in);
System.out.print("請輸入身分證字號:");
String id1=sc.next();
//不管輸入是大小寫,都轉成大寫
String id=id1.toUpperCase();
int c=0,d=0;
//判斷字元數是否足夠
if (id.length()!=10)
{
System.out.println("你所輸入字數不是10個!!");
continue;
}
//判斷第一個字元是否為大寫英文字
for (int i=65;i<=90;i++)
{
char ch=(char)i;
if (id.charAt(0)==ch) //若是第一個字為英文則變數c=1
c=1;
}
if (c==0) //當輸入第一個字不是英文
{
System.out.println("你所輸入第一個字不是英文!!");
continue;
}
//判斷第二個字元是否正確
char ch1=49,ch2=50; //ch1為身分証第二個字為1,ch2為身分証第二個字為2
if ((id.charAt(1)==ch1)||(id.charAt(1)==ch2)) //輸入的第二個字是1或2則變數d=1
d=1;
if (d==0) //當輸入第二個字不是1或2時
{
System.out.println("你所輸入第二個字錯誤!!");
continue;
}
//判斷格式是否符合身分證驗證
String str="ABCDEFGHJKLMNPQRSTUVXYWZIO";
int e=(int)str.indexOf(id.charAt(0))+10; //令A=10,B=11....依此類推(抓A在str的位置+10,ps第一個位置為0)
int f=e/10,g=e%10,total=0;
g*=9;
int aa=0;
for (int j=1;j<=8;j++)
total+=(id.charAt(j)-48)*(9-j); //-48原因在於id.charAt(抓的是數字的char)
total+=+f+g;
total%=10;
int bb=((id.charAt(9)-48)+total)%10;
if (bb==0)
{
System.out.println("這是正確的身分證號碼!!");
aa=1;
break; //正確,跳出迴圈
}
if (aa==0) //aa不等於0則輸入身分證字號不符合
System.out.println("這不是正確的身分證字號!!");
continue;
}
}
}
文章標籤
全站熱搜

233