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);}
}
}
解决方案
当有人输入他们的 ISBN 时,他们输入的 ISBN 之间是否有空格?
nextInt()
将检索由空格分隔的整数,因此很可能d1
接收到整个九个整数。
如果您一次输入一个,那么它应该可以工作。
输入在它们之间带有空格的数字,或者每个都在自己的行上。Scanner
会照顾其余的。
笔记:
如果您不希望用户必须一个接一个地输入数字,请尝试将他们的输入视为:
String digits = in.nextLine();
digits.charAt(0)
您可以使用etc引用该字符串中的每个数字。
int d1=Integer.parseInt("" + digits.charAt(0));
等等。这会将单个字符转换digits.charAt(0)
为公式的整数。
希望这可以帮助!
推荐阅读
- javascript - JavaScript - 等待异步函数完成
- javascript - chrome扩展拒绝执行内联脚本
- python - 准确度/损失图中的数字缺失点
- jquery - jQuery Lightbox 2 在随机图像中显示边框
- node.js - 子模块是否存在相反或相反的情况?
- php - 如何在对 XPLAN API 的 CURL 请求中构造 edai.Search 方法的第三个参数?
- dns - 为 DNS 区域文件提取域
- google-app-engine - appIdentityService.signForApp (Java) 和 app_identity.sign_blob (Python) 结果不同
- ajax - ajax成功后如何替换当前表
- mysql - 限制Mysql需要从表中返回n%的随机记录