CCF ISBN号码

题目分析:此题就是将前9个数字分别和1...9对应相乘,乘积和对11求模。其中结果是11,最后一位是X,不然为结果。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		String string = scanner.nextLine();
		int []num = new int[9];
		char ch;
		
		int j = 0;
		for(int i=0;i<string.length()-1;i++) {
			if(i==1||i==5||i==11)
				continue;
			num[j++] = Integer.parseInt(string.charAt(i)+"");
		}
		
		int sum = 0;  //求得前9个数字与1...9对应的乘积和
		for(int i=0;i<9;i++)
			sum += ((i+1)*num[i]);
		
		
        /* *
           分为四种情况:1, 最后一位为X, 所求结果为模为10  输出Right
                        2, 最后一位为X, 所求结果不为10, 输出正确值
                        3, 最后一位不为X, 所求结果模为10, 输出正确值
                        4, 最后一位不为X, 所求结果模不为10, 输出Right
                        5, 最后一位不为X, 所求结果模和最后一位不相等,输出正确值。
           此时还是挺绕的。

        */

		if(string.charAt(12)=='X') {
			if(sum%11==10)
				System.out.println("Right");
			else {
				for(int i=0;i<9;i++) {
					if(i==0||i==3||i==8)
						System.out.print(num[i]+"-");
					else
						System.out.print(num[i]);
				}
				
				if(sum%11==10)
					System.out.println("X");
				else 
					System.out.println(sum%11);
			}
		}
		else {
			if(sum%11==Integer.parseInt(string.charAt(12)+""))
				System.out.println("Right");
			else {
				for(int i=0;i<9;i++) {
					if(i==0||i==3||i==8)
						System.out.print(num[i]+"-");
					else
						System.out.print(num[i]);
				}
				
				if(sum%11==10)
					System.out.println("X");
				else 
					System.out.println(sum%11);
			}
		}
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章