Добавление элемента списка / массива в цикл, java12 - PullRequest
0 голосов
/ 22 июня 2019

Я новичок в Java и не в курсе всех синтаксисов.Конечной целью является получение номера isbn по формуле d1 d2 d3 d4 d5 d6 d7 d8 d9 d10, где d10 = (d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 *6 + d7 * 7 + d8 * 8 + d9 * 9)% 11 Чтобы добиться этого, я пытаюсь использовать цикл for для генерации другого числа d1, d2 и т. Д. Из 9-значного пользовательского ввода, скажем, 123456789 дляпример.

Я хочу поместить каждую из этих цифр отдельно в список или массив, чтобы я мог вызвать элемент списка и формулу.

Однако я изо всех сил пытаюсь получить своипетля работает.Я попытался применить формулу к входу без цикла 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 голосов
/ 22 июня 2019

пожалуйста, попробуйте это:

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...