循环输入直到满足条件

有题目如图

img


我的思路是 现输入一个String的字符串 digits
如果digits的长度不等于9 ,提示重新输入digits 直到长度为9
如果digits的长度等于9 然后把字符串 digits 转换成char 数组 。判断char数组每一位字符是否是数字
如果不是 就提示重新输入digits 然后重新进行判断 长度和char数组中的字符 是否满足要求

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();