我是Java的新手,并且在所有语法上都不是最新的。 最终目标是根据公式d1 d2 d3 d4 d5 d6 d7 d8 d9 d10得到isbn数,其中d10 =(d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9)%11 为此,我尝试使用一个for循环从9位用户输入生成不同的数字d1,d2等,例如123456789。
我想将每个这些数字分别放入列表或数组中,以便可以调用列表元素和公式。
但是,我正在努力使自己的for-loop工作正常。 我尝试将公式应用于输入而没有任何for循环,只是为每个数字手动完成了for循环,这可行,但是我认为使用循环会更整齐。
我使用eclipse作为IDE,似乎并没有得到实际错误,但是结果不是我想要的。
关于如何解决这个问题或做错了什么的任何想法?
import java.util.ArrayList;
import java.util.Scanner;
public class ISBN1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer>[] myArray = new ArrayList[9];
myArray[0] = new ArrayList<Integer>();
System.out.print("Enter the first 9 digits of an ISBN as integer: ");
int isbn = input.nextInt();
for (int i = 0 ; i < 10; i++ ) {
myArray[i].add(isbn / 100000000-10*i);
int remainingDigits = isbn % 100000000- 10*i;
}
for (ArrayList<Integer> mylist: myArray) {
for (int bar : mylist) {
System.out.println(bar);
}
}
}
}
答案 0 :(得分:0)
请尝试以下操作:
public static void main(final String[] args) {
final Scanner input = new Scanner(System.in);
System.out.print("Enter the first 9 digits of an ISBN as integer: ");
final String isbn = input.nextLine();
final ArrayList<Integer> myArray = new ArrayList<>(isbn.length());
for (int i = 0; i < isbn.length(); i++) {
myArray.add(Integer.valueOf(isbn.substring(i, i + 1)));
}
for (final Integer inmylist : myArray) {
System.out.println(inmylist);
}
}
修改 如果您还想检查输入内容,可以尝试一下
public static void main(final String[] args) {
final Scanner input = new Scanner(System.in);
String isbn = null;
while (isbn == null) {
System.out.print("Enter the first 9 digits of an ISBN as integer: ");
isbn = input.nextLine();
if (!isbn.matches("\\d{9}")) {
isbn = null;
}
}
final ArrayList<Integer> myArray = new ArrayList<>(isbn.length());
for (int i = 0; i < isbn.length(); i++) {
myArray.add(Integer.valueOf(isbn.substring(i, i + 1)));
}
for (final Integer inmylist : myArray) {
System.out.println(inmylist);
}
}