You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ISBN格式输出问题:无法生成带连字符的规范ISBN(如9-562-32458-4)

解决ISBN带连字符格式输出问题

要输出符合规范的带连字符ISBN格式,只需将输入的9位数字拆分为1位-3位-5位的结构,再拼接最后一位校验码即可。以下是修改后的完整代码:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.print("Enter 9 digit number:  ");

    String num = input.next();
    int sum = 0;
    for (int i = 1; i <= num.length(); ++i) {
        sum += (i * (num.charAt(i - 1) - '0'));
    }

    // 生成校验位字符串
    String checkDigit;
    int d10 = sum % 11;
    if (d10 == 0) {
        checkDigit = "X";
    } else {
        checkDigit = String.valueOf(d10);
    }

    // 拆分9位数字并拼接规范格式
    String part1 = num.substring(0, 1);
    String part2 = num.substring(1, 4);
    String part3 = num.substring(4, 9);
    String formattedIsbn = String.format("%s-%s-%s-%s", part1, part2, part3, checkDigit);

    System.out.println("Formatted ISBN: " + formattedIsbn);
}

关键修改说明:

  • 拆分输入字符串:用substring方法将9位数字拆分为三段:第1位、中间3位、最后5位,匹配示例中的分段规则。
  • 统一校验位类型:将校验位转为字符串类型,避免数字与字符串拼接时的类型问题。
  • 格式拼接:用String.format直接拼接各分段与校验位,比printf更直观,也能精准实现X-XXX-XXXXX-X的格式要求。

如果偏好使用printf输出,可将最后一行替换为:

System.out.printf("Formatted ISBN: %s-%s-%s-%s%n", part1, part2, part3, checkDigit);

内容的提问来源于stack exchange,提问作者Flapers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:50:22