2020年3月7日 星期六

[zerojudge]a054. 電話客服中心

a054. 電話客服中心

根據輸入提供的身分證後9碼,去列出符合規範的首位字母碼。
想到之前「a020. 身分證檢驗 」寫過的程式,複製貼上變成一個方法,檢查該身分證字號是否有效。
main裡面只要簡單的for迴圈讓A~Z跑過一遍,符合的列印出來就好,太輕鬆了吧!但是效率並沒有反向推算來的高喔,有興趣的可以試試看。

程式碼如下:

  1. /* a054. 電話客服中心
  2. *
  3. *
  4. * 2020/3/7
  5. */
  6.  
  7. import java.util.Scanner;
  8.  
  9. public class Pa054{
  10.  
  11. public static void main(String[] args){
  12. Scanner scanner = new Scanner(System.in);
  13.  
  14. while(scanner.hasNext()){
  15. String s = scanner.nextLine();
  16.  
  17. for(int i = 'A'; i <= 'Z'; i++){
  18. System.out.print(isValidid((char)i + s)? (char)i: "");
  19. }
  20.  
  21. System.out.println();
  22. }
  23. }
  24.  
  25. public static boolean isValidid(String input){
  26. String[] idNum = {"10", "11", "12", "13", "14", "15", "16", "17", "34",
  27. "18", "19", "20", "21", "22", "35", "23", "24", "25",
  28. "26", "27", "28", "29", "32", "30", "31", "33"};
  29.  
  30. int[] num = {1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1};
  31.  
  32. input = idNum[input.charAt(0) - 'A'] + input.substring(1);
  33.  
  34. int sum = 0;
  35.  
  36. for(int i = 0; i < input.length(); i++){
  37. sum += num[i] * Character.getNumericValue(input.charAt(i));
  38. }
  39.  
  40. return sum % 10 == 0;
  41. }
  42. }

沒有留言:

張貼留言