洛谷P 1055のISBN番号のJava実現


テーマソース
P 1055[NOIP 2008普及グループ]ISBN番号
ACコード
import java.util.Scanner;

public class Main {
     

	public static void main(String[] args) {
     
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		String ISBN = scan.next();
		char[] arr = ISBN.toCharArray();
		int num = 0;
		int count = 0;
		for(int i = 0; i < arr.length-1; i++) {
     
			if(arr[i] != '-') {
     
				count++;
				num = num + count*(Integer.parseInt(String.valueOf(arr[i])));
			}
		}
		int result = num % 11;
		if(result == 10) {
     
			if(arr[arr.length-1]=='X')
				System.out.print("Right");
			else {
     
				for(int i = 0; i < arr.length; i++) {
     
					if(i == arr.length-1)
						System.out.print("X");
					else
						System.out.print(arr[i]);
				}
			}	
			//    10
		}else {
     
			int judge = 0;
			if(arr[arr.length-1]!='X') {
     
				if(Integer.parseInt(String.valueOf(arr[arr.length-1]))==result) {
     
					judge = 1;
					System.out.print("Right");
					}
			}
			if(judge == 0){
     
				for(int i = 0; i < arr.length; i++) {
     
					if(i == arr.length-1)
						System.out.print(result);
					else
						System.out.print(arr[i]);
				}
			}
		}
		scan.close();
	}

}


注意すべき点:
  • 剰余が10の場合、識別コードと一致しない場合は、最後に数字ではなくXを出力する.
  • 残数が10でない場合、元の入力がXである可能性があり、直接Xを整数に変換できないことを考慮して、判断しなければならない.