Добавить элементы с пользовательским вводом в нулевой ArrayList в Java

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

Я превратил этот код в два разных метода пустого конструктора, которые будут использоваться в основном классе со знакомым основным методом. Но с этим классом у меня больше всего проблем.

Кстати! Я хочу, чтобы пользователь добавлял элементы, а не я.

package HashArray;
import java.util.ArrayList;
import java.util.Scanner;
public class arrayListNull {
    public static void arrayList() {
         ArrayList<Integer> list = new ArrayList<Integer>();
         list.add(null);
         list.add(null);
         list.add(null);
         list.add(null);
         list.add(null);  
    }
    public static void inputUser() {
        Scanner scanner = new Scanner(System.in);
        for(int i=0 ; i < 5 ; i++){
            arrayList.list.add(scanner.nextInt());
        }
        System.out.println(arrayList.list);
        scanner.close();
    }
}```

У вас нет метода main. Вы можете показать это нам?

markspace 18.03.2022 01:06

Не существует такой вещи, как нулевой массив. Ваш метод void, что означает, что он ничего не возвращает. Ничто, которое он возвращает, не может быть доступно с синтаксисом, который вы, кажется, хотите. Кроме того, вы на самом деле не вызываете метод.

Elliott Frisch 18.03.2022 01:07

@markspace Я бы показал его вам, потому что он не содержит его здесь, потому что это класс, который я буду использовать в основном классе, содержащем меню. Вот почему я использовал пустоту.

Simon Suarez 18.03.2022 01:12

@ElliottFrisch Итак, что мне следует использовать, если я хочу использовать этот класс в основном классе?

Simon Suarez 18.03.2022 01:13

Какой смысл в arrayListNull, если все ваши методы статичны? С таким же успехом можно было бы просто сделать эти статические методы в том же классе, который содержит main(). ПОЧЕМУ вы используете этот класс? Есть ли какое-то требование, которое вы пытаетесь выполнить здесь?

Idle_Mind 18.03.2022 01:19
Итак, что мне следует использовать, если я хочу использовать этот класс в основном классе? Очевидно, нет. Потому что ничто из этого не является юридическим синтаксисом.
Elliott Frisch 18.03.2022 01:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Очень вероятно, что это действие тренировки, которую вы делаете, и вы застряли. Вы можете попробовать это:

public static void inputUser() {
    List<Integer> arrayList = new ArrayList<>();
    int allowInputs = 5;

    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < allowInputs; i++) {
        arrayList.add(scanner.nextInt());
    }
    scanner.close();

    System.out.println("Your specified elements:");
    arrayList.forEach(System.out::println);
}

// RUN
public static void main(String[] args) {
    inputUser();
}

хорошее кодирование! ¯_(ツ)_/¯

Ответ принят как подходящий

Вы определили общедоступный метод с именем arrayList, который ничего не возвращает (void). Этот метод (а) создает экземпляр объекта ArrayList, (б) заполняет список нулевыми ссылками, что является избыточным, поскольку по умолчанию используются нулевые значения, и (в) отбрасывает этот ArrayList объект в конце метода. Пуф, ушел.

Итак, ваш другой метод inputUser ссылается на переменную с именем arrayList, которой никогда не существовало.

В вашем коде есть другие проблемы. Вы не следуете соглашениям об именах Java: классы начинаются с прописных букв, методы и переменные — с нижних. Вы слишком полагаетесь на static, вероятно, это признак того, что вы не изучаете объектно-ориентированные концепции. И вы, похоже, кодируете вслепую, не продумывая и не работая с другим примером кода. Я предлагаю вам просмотреть свой учебник и Учебники по Java, предоставленные Oracle бесплатно.

Кстати, используйте синтаксис try-with-resources для автоматического закрытия ресурсов, таких как объекты Scanner.

Другие вопросы по теме