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