gpt4 book ai didi

java - 校验和 - ISBN 程序

转载 作者:行者123 更新时间:2023-12-01 07:28:38 27 4
gpt4 key购买 nike

这个问题让我很困惑。我尝试使用这样的循环:基本上我尝试从输入中获取第一个数字并执行公式,但它似乎不起作用。它看起来很简单,但我无法弄清楚。你可以帮帮我吗?谢谢。

public static int ISBN(String ninedigitNum) {
number = 9;
while (number > 0) {
int nextDigit = ninedigitNum.substring(0,1);

...
}

Checksums (Source: Princeton University). The International Standard Book Number (ISBN) is a 10 digit code that uniquely specifies a book. The rightmost digit is a checksum digit which can be uniquely determined from the other 9 digits from the condition that d1 + 2d2 + 3d3 + ... + 10d10 must be a multiple of 11 (here di denotes the ith digit from the right). The checksum digit d1 can be any value from 0 to 10: the ISBN convention is to use the value X to denote 10. Example: the checksum digit corresponding to 020131452 is 5 since is the only value of d1 between 0 and and 10 for which d1 + 2*2 + 3*5 + 4*4 + 5*1 + 6*3 + 7*1 + 8*0 + 9*2 + 10*0 is a multiple of 11. Create a Java method ISBN() that takes a 9-digit integer as input, computes the checksum, and returns the 10-digit ISBN number. Create 3 JUnit test cases to test your method.

明白了,谢谢大家!

最佳答案

它不起作用怎么办?无论哪种方式,我相信您错过的是您不断获得相同的子字符串,这将是字符串的第一个数字:int nextDigit = ninedigitNum.substring(0,1); 。此外,您需要使用 int,而不是 String;如果需要,您可以从技术上将 String 转换为 int,但问题本身需要 int。

有两种方法可以做到这一点。我会通过意识到 10 次方的 mod 将为您提供整数的相应数字来做到这一点,但更简单的方法是转换为 char 数组,然后直接访问。请注意,这里没有错误检查;你必须自己添加它。此外,这里还有很多“神奇数字”:好的代码通常只有非常非常少。我建议在尝试这些问题之前先学习更多的数据结构;老实说,如果没有数组和链表,你几乎无能为力。

char[] ISBN = ninedigitNum.toCharArray();

//Process each number
int total = 0;
for(int i=0; i<9; i++){
int current_int = Integer.parseInt(ISBN[i]);
total += current_int * (10 - i)
}

//Find value of d1
for(int i=0; i<9; i++){
if(((total + i) % 11) == 0){
total += i*100000000;
break;
}
}

return total;

一般来说:使用 System.out.println(x); 进行打印输出,或者使用编译器的调试器来查看处理过程中发生的情况。

关于java - 校验和 - ISBN 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477972/

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