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