ISBN Checker-无循环

时间:2018-09-19 19:25:13

标签: java isbn

我正在尝试进行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);}
    }
}

1 个答案:

答案 0 :(得分:2)

当有人输入ISBN时,他们之间是否有空格? nextInt()将检索由空格分隔的整数,因此d1可能正在接收全部九个整数。

如果您一次输入一个,则应该可以。

输入数字之间用空格隔开,或者每行一行。 Scanner将负责其余的工作。

注意:

如果您不希望用户一一输入数字,请尝试将其输入为:

String digits = in.nextLine();

您可以使用digits.charAt(0)等引用该字符串中的每个数字。

int d1=Integer.parseInt("" + digits.charAt(0));

,依此类推。这样会将单个字符digits.charAt(0)转换为公式的整数。

希望这会有所帮助!