在for循环中添加列表/数组元素,java12

时间:2019-06-22 17:16:44

标签: java eclipse for-loop arraylist

我是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);
              }
            }
    }


}

1 个答案:

答案 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);
    }
}