a020. 身分證檢驗
請先閱讀:身分證驗證規則
英文代號看似連續,結果參雜一些例外,只好依照英文字母的順序打成字串陣列:(
然後用整數陣列儲存每個編號要乘上的值。
值得提的點應該是Character.getNumericValue(),可以把字元換算成unicode的編碼。
題外話:A123456789是真有其人,被別人盜用的頻率超高,三天兩頭就要跑一次法院,但是這位勇者不換號碼,因為很麻煩。
程式碼如下:
/* a020. 身份證檢驗
*
*
* 2020/3/1
*/
import java.util.Scanner;
public class Pa020{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String[] idNum = {"10", "11", "12", "13", "14", "15", "16", "17", "34",
"18", "19", "20", "21", "22", "35", "23", "24", "25",
"26", "27", "28", "29", "32", "30", "31", "33"};
int[] num = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1};
while(scanner.hasNext()){
String input = scanner.nextLine();
input = idNum[Character.getNumericValue(input.charAt(0)) - Character.getNumericValue('A')] + input.substring(1);
int sum = 0;
for(int i = 0; i < input.length(); i++){
sum += num[i] * Character.getNumericValue(input.charAt(i));
}
System.out.println(sum % 10 == 0 ? "real": "fake");
}
}
}
沒有留言:
張貼留言