gpt4 book ai didi

java - 将 ISBN10 转换为 ISBN13

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:48 25 4
gpt4 key购买 nike

我尝试使用 Java 将 ISBN10 代码转换为 ISBN13 编号。从 。在 isbn-13.info 上,我找到了转换它们的方法。

Example: 0-123456-47-9

  • Begin with prefix of “978”
  • Use the first nine numeric characters of the ISBN (include dashes) 978-0-123456-47-
  • Calculate the EAN check digit using the “Mod 10 Algorithm” 978-0-123456-47-2

使用它我创建了一个 Java 程序来进行转换。

public class ISBNConverter {
public static void main(String[] args) {
String isbn10 = "9513218589";
String isbn13 = "";
int sum = 0;
int checkNumber = 0;
int multiplier = 2;

String code = "978" + isbn10.substring(0, isbn10.length() - 1);

for(int i = code.length() - 1; i >= 0; i--) {
int num = Character.getNumericValue(code.charAt(i));
isbn13 += String.valueOf(num * multiplier);

multiplier = (multiplier == 2) ? 1 : 2;
}

for(int i = 0; i < isbn13.length(); i++) {
sum += Character.getNumericValue(isbn13.charAt(i));
}

while(sum % 10 != 0) {
sum++;
checkNumber++;
}

System.out.println(checkNumber);
}
}

对于示例 ISBN10 代码 9513218589(978951321858 ISBN13 没有支票号码)它返回 5 作为支票号码。如果我使用 ISBN's official site 上的转换器计算它,我得到 4 作为校验和。由于某种原因,新代码中的数字总和比应有的数字少了一个。

我与此抗争了很长时间,我相信我已经开始失明了:我就是找不到我做错了什么。有人可以帮忙吗?

最佳答案

给你

    public static String ISBN10toISBN13( String ISBN10 ) {
String ISBN13 = ISBN10;
ISBN13 = "978" + ISBN13.substring(0,9);
//if (LOG_D) Log.d(TAG, "ISBN13 without sum" + ISBN13);
int d;

int sum = 0;
for (int i = 0; i < ISBN13.length(); i++) {
d = ((i % 2 == 0) ? 1 : 3);
sum += ((((int) ISBN13.charAt(i)) - 48) * d);
//if (LOG_D) Log.d(TAG, "adding " + ISBN13.charAt(i) + "x" + d + "=" + ((((int) ISBN13.charAt(i)) - 48) * d));
}
sum = 10 - (sum % 10);
ISBN13 += sum;

return ISBN13;
}

请原谅中间的日志行,我是从我正在处理的 android 项目复制粘贴的

关于java - 将 ISBN10 转换为 ISBN13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com