我正在尝试进行ISBN检查,但是它不起作用。一个示例是用户输入013601267并返回0136012671。我不明白问题是什么。没有循环。 任何帮助都会很棒。
import java.util.*;
public class ISBN{
public static void main(String[]args){
Scanner in=new Scanner(System.in);
System.out.print("Enter 9 digit ISBN");
//variables//
int d1=in.nextInt();
int d2=in.nextInt();
int d3=in.nextInt();
int d4=in.nextInt();
int d5=in.nextInt();
int d6=in.nextInt();
int d7=in.nextInt();
int d8=in.nextInt();
int d9=in.nextInt();
int d10=(d1*1+d2*2+d3*3+d4*4+d5*5+d6*6+d7*7+d8*8+d9*9) %11;
//keyboard
if (d10==10){
System.out.print("ISBN"+d1+d2+d3+d4+d5+d6+d7+d8+d9+"X");}
else if(d10 !=10); {
System.out.print("ISBN"+d10);}
}
}
答案 0 :(得分:2)
当有人输入ISBN时,他们之间是否有空格?
nextInt()
将检索由空格分隔的整数,因此d1
可能正在接收全部九个整数。
如果您一次输入一个,则应该可以。
输入数字之间用空格隔开,或者每行一行。 Scanner
将负责其余的工作。
注意:
如果您不希望用户一一输入数字,请尝试将其输入为:
String digits = in.nextLine();
您可以使用digits.charAt(0)
等引用该字符串中的每个数字。
int d1=Integer.parseInt("" + digits.charAt(0));
,依此类推。这样会将单个字符digits.charAt(0)
转换为公式的整数。
希望这会有所帮助!