题目分析:此题就是将前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);
}
}
}
}