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");
- }
- }
- }
沒有留言:
張貼留言