Объясняю, я пытаюсь заставить пользователя ввести пять элементов в список с фиксированным размером в пять элементов; для этого я инициализировал эти элементы нулевым значением. Моя проблема в том, что я точно не знаю, как это сделать для этого конкретного случая. Я пробовал это, но это явно не правильное решение.
Я превратил этот код в два разных метода пустого конструктора, которые будут использоваться в основном классе со знакомым основным методом. Но с этим классом у меня больше всего проблем.
Кстати! Я хочу, чтобы пользователь добавлял элементы, а не я.
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();
}
}```
Не существует такой вещи, как нулевой массив. Ваш метод void
, что означает, что он ничего не возвращает. Ничто, которое он возвращает, не может быть доступно с синтаксисом, который вы, кажется, хотите. Кроме того, вы на самом деле не вызываете метод.
@markspace Я бы показал его вам, потому что он не содержит его здесь, потому что это класс, который я буду использовать в основном классе, содержащем меню. Вот почему я использовал пустоту.
@ElliottFrisch Итак, что мне следует использовать, если я хочу использовать этот класс в основном классе?
Какой смысл в arrayListNull
, если все ваши методы статичны? С таким же успехом можно было бы просто сделать эти статические методы в том же классе, который содержит main()
. ПОЧЕМУ вы используете этот класс? Есть ли какое-то требование, которое вы пытаетесь выполнить здесь?
Очень вероятно, что это действие тренировки, которую вы делаете, и вы застряли. Вы можете попробовать это:
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
.
У вас нет метода
main
. Вы можете показать это нам?