有题目如图
import java.util.Scanner;
public class Exer9 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("Enter the first 9 digits of an ISBN as integer :");
// String [] arr=new String[10];
String digits = input.next();
int sum=0;
while (true){
if (digits.length() == 9) {
char arr[] = digits.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 57 || arr[i] < 48) {
System.out.println("输入的数据有非数字部分!"); //此处应该如何写?
return;
} else {
sum += (arr[i] - 48) * (i + 1);
}
}
break;
}
else {
System.out.println("输入错误,请重新输入:");
digits = input.next();
}
}
String s1=null;
if(sum%11==10)
{
s1="x";
}
else{
s1=Integer.toString(sum%11);
}
System.out.println(digits+s1);
}
}
基本上对的,改了改:
import java.util.Scanner;
public class ISBNGenerator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the first 9 digits of an ISBN as an integer: ");
String digits = input.next();
int sum = 0;
while (true) {
if (digits.length() == 9) {
char[] arr = digits.toCharArray();
boolean isValid = true;
for (int i = 0; i < arr.length; i++) {
if (!Character.isDigit(arr[i])) {
isValid = false;
break;
}
sum += (arr[i] - '0') * (i + 1);
}
if (isValid) {
break;
}
}
System.out.println("Invalid input, please enter 9 digits: ");
digits = input.next();
}
String lastDigit;
if (sum % 11 == 10) {
lastDigit = "X";
} else {
lastDigit = Integer.toString(sum % 11);
}
String isbn = digits + lastDigit;
System.out.println("The ISBN-10 number is: " + isbn);
}
}
加了个判断输入有效否,
把return改成:
i = -1;
System.out.println("Enter the first 9 digits of an ISBN as integer :");
digits = input.next();
arr = digits.toCharArray();