wipeout 2023-05-12 15:57 采纳率: 33.3%
浏览 20
已结题

循环输入直到满足条件

有题目如图

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

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-05-12 16:12
    关注

    基本上对的,改了改:

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

    加了个判断输入有效否,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀