首页 > 解决方案 > 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);}
    }
}

标签: javaisbn

解决方案


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

如果您一次输入一个,那么它应该可以工作。

输入在它们之间带有空格的数字,或者每个都在自己的行上。Scanner会照顾其余的。

笔记:

如果您不希望用户必须一个接一个地输入数字,请尝试将他们的输入视为:

String digits = in.nextLine();

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

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

等等。这会将单个字符转换digits.charAt(0)为公式的整数。

希望这可以帮助!


推荐阅读