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
相关产品推荐
相关产品推荐

