2008年5月13日 星期二

[測試]Code Style


Code Style CSS測試
使用注意事項,得對於預張貼之程式碼做以下置換:
#雙引號「"」 => "
#單引號「'」 => '
#大於符號「>」 => >
#小於符號「<」 => <
#AND符號「&」 => &


/*
target: ID check
create:2008.04.15
author:KPXX
*/

import java.util.Scanner;

public class prog3
{
public static void main(String[] args)
{
String area="ABCDEFGHJKLMNPQRSTUVXYWZIO"; //Area to num (0~25) + 10
int len, valueTemp,value,checkNum;
Scanner keyin = new Scanner(System.in);

System.out.print("請輸入身分證字號,英文字母請大寫:");
String id =keyin.next();
len = id.length()-2;

try
{
//----format check----
if(id.length()!=10)
throw new Exception("身分證字號長度不正確");
if(!id.matches("[a-zA-Z].{9}"))
throw new Exception("身分證字號縣市欄不正確");
if(!id.matches(".[1-2].{8}"))
throw new Exception("身分證字號性別欄不正確");
if(!id.matches(".[0-9]{9}"))
throw new Exception("身分證字號後九碼須為數字");

//----verify checksum
valueTemp = area.indexOf(id.charAt(0))+10;
value =valueTemp / 10 *1 + valueTemp%10 *9 ;

for(int i=1,j=8;i&lt;=len;i++,j--)
value += Integer.parseInt( id.substring(i,i+1) )*j;

checkNum = 10- value %10;

if(Integer.parseInt(
id.substring(id.length()-1,id.length())) == checkNum)
System.out.println(id + "為正確的身分證字號");
else
throw new Exception("身分證字號驗證碼不正確");

}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}