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