【发布时间】:2020-06-19 22:33:00
【问题描述】:
我需要编写一个程序,允许用户输入一个 13 位的 ISBN 作为单个整数。
然后程序应根据上面的公式确定并显示该数字是否有效。如果用户尝试输入超过 13 位的数字,它还需要打印错误消息。 下面是我正在处理的代码。
我是 java 新手,我不明白哪里出错了。我似乎也不知道如何获得长变量的长度。
import java.util.Scanner;
public class ISBNChecker{
public static void main(String [] args){
long isbnNumber;
long isbnTotal;
long x;
Scanner scnr = new Scanner(System.in);
isbnNumber = scnr.nextLong();
while (isbnNumber > 0) {
x = isbnNumber % 10;
isbnTotal = total + x;
isbnNumber = isbnNumber / 10;
x = isbnNumber % 10;
isbnTotal = total + (3 * x);
isbnNumber = isbnNumber / 10;
}
if (isbnTotal % 10 = 0) {
System.out.println("Number is valid!");
}
else {
System.out.println("Number is invalid.");
}
}
}
【问题讨论】:
-
你得到了什么错误,它告诉你错误在哪一行?
-
当你可以将它作为字符串读取时,为什么要立即读取它,然后检查它的长度,然后解析它?
-
读取为字符串解决了多个问题,因为在使用模运算符检查有效性之前,您必须将每个数字乘以其在数字中的位置并将所有这些值相加。这意味着您可以在一个已知持续时间的循环中完成所有事情(想想 for,而不是 while)。
标签: java