4 条题解
-
0
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) { Scanner sc = new Scanner(System.in); //用字符串来收纳输入的编号 String str = sc.next(); //将字符串转化为数组 char[] charArr = str.toCharArray(); //再创建一个int类型的数组,来存储转化后的数字,index表示intArr的索引 int[] intArr = new int[10]; int index = 0; //0-670-82162-4这是数组存储的内容,如果最后一位是'X',这里便不会存入 for (int i = 0; i < charArr.length; i++) { if (charArr[i] >= '0' && charArr[i] <= '9') { intArr[index] = charArr[i] - '0'; index++; } } //计算最后一个识别码数字是否正确,sum是前面数字题目要求的和 int sum = 0; for (int i = 0; i < intArr.length - 1; i++) { sum += intArr[i] * (1+i); } //算出最后一位数字是几 int result = sum % 11; if (result == intArr[9]) { System.out.println("Right\n"); } else if(result == 10) { //如果最后一位是'X',那就是正确的,直接输出Right if (charArr[charArr.length - 1] == 'X') { System.out.println("Right "); } else { //最后一位不是'X',要输出正确的内容 char temp = 'X'; charArr[charArr.length - 1] = temp; for (int i = 0; i < charArr.length; i++) { System.out.print(charArr[i]); } } } else { //因为result是以int类型存储在电脑里的,若是直接(char)(result) 会打出乱码,因为可以显示的ASCII表中的东西一般是32到100,所以前面+ '0' char temp = (char)('0' + result); charArr[charArr.length - 1] = temp; for (int i = 0; i < charArr.length; i++) { System.out.print(charArr[i]); } } }
}
信息
- ID
- 5113
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 451
- 已通过
- 163
- 上传者