【发布时间】:2013-12-09 18:31:54
【问题描述】:
这个问题让我很困惑。我尝试使用这样的循环:基本上我试图从输入中获取第一个数字并执行公式,但它似乎不起作用。它看起来很简单,但我无法弄清楚。你可以帮帮我吗?谢谢。
public static int ISBN(String ninedigitNum) {
number = 9;
while (number > 0) {
int nextDigit = ninedigitNum.substring(0,1);
...
}
校验和(来源:普林斯顿大学)。国际标准 书号 (ISBN) 是一个 10 位数的代码,用于唯一指定一本书。 最右边的数字是校验和数字,可以是唯一的 根据 d1 + 2d2 + 的条件从其他 9 位数字确定 3d3 + ... + 10d10 必须是 11 的倍数(这里 di 表示第 i 个 右数)。校验和数字 d1 可以是从 0 开始的任何值 到 10:ISBN 约定是使用值 X 来表示 10。 示例:020131452 对应的校验和位数为 5,因为是 d1 的唯一值介于 0 和 10 之间,其中 d1 + 2*2 + 3*5 + 4*4 + 5*1 + 6*3 + 7*1 + 8*0 + 9*2 + 10*0 是 11 的倍数。创建一个 Java 方法 ISBN() 将 9 位整数作为输入,计算 校验和,并返回 10 位 ISBN 号。创建 3 个 JUnit 测试 案例来测试你的方法。
我知道了,非常感谢大家!
【问题讨论】:
-
你必须从字符串的最后一个索引开始选择每个整数。
-
但是如何获得 10 位数字呢?我们将不得不以某种方式对其进行总结,但由于每个数字都乘以不同的数字,因此似乎很难使用循环 (d1 + 2d2 + 3d3 + ... + 10d10 )