a054. 電話客服中心
根據輸入提供的身分證後9碼,去列出符合規範的首位字母碼。
想到之前「a020. 身分證檢驗 」寫過的程式,複製貼上變成一個方法,檢查該身分證字號是否有效。
main裡面只要簡單的for迴圈讓A~Z跑過一遍,符合的列印出來就好,太輕鬆了吧!但是效率並沒有反向推算來的高喔,有興趣的可以試試看。
程式碼如下:
/* a054. 電話客服中心 * * * 2020/3/7 */ import java.util.Scanner; public class Pa054{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ String s = scanner.nextLine(); for(int i = 'A'; i <= 'Z'; i++){ System.out.print(isValidid((char)i + s)? (char)i: ""); } System.out.println(); } } public static boolean isValidid(String input){ 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}; input = idNum[input.charAt(0) - 'A'] + input.substring(1); int sum = 0; for(int i = 0; i < input.length(); i++){ sum += num[i] * Character.getNumericValue(input.charAt(i)); } return sum % 10 == 0; } }
沒有留言:
張貼留言