【问题标题】:Adding list/array element in for loop, java12在for循环中添加列表/数组元素,java12
【发布时间】:2019-11-05 03:18:38
【问题描述】:

我是 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 循环正常工作。 我尝试在没有任何 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);
              }
            }
    }


}

【问题讨论】:

标签: java eclipse for-loop arraylist


【解决方案1】:

请试试这个:

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

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2018-01-27
    • 1970-01-01
    • 2020-08-12
    • 2015-01-25
    相关资源
    最近更新 更多