Заполните arraylist переменными внутри для

Мне нужно заполнить Arraylist переменными внутри for. Мне удалось зайти так далеко. Дело в том, что по мере продолжения мне нужно добавить каждый из них в Arraylist из Scanner.

public static void main(String[] args) {
        int n = s.nextInt();
        ArrayList<Atleticar> atleticari = new ArrayList<Atleticar>();

        String ime;
        String pol;
        int vozrast;
        double vreme;
        String zemja;

        s.nextLine();

        for(int i = 0; i < atleticari.size(); i++) {
            ime = s.nextLine();
            pol = s.nextLine();
            vozrast = s.nextInt();
            vreme = s.nextDouble();
            zemja = s.nextLine();
        }
    }

Вы не заполняете аррайлист, вы его читаете. Кстати, что такое s?

Dominique 31.10.2018 12:01

@Dominique s - это имя сканера, я просто не скопировал строку, в которой я его инициализировал. Я знаю, что я не заполняю аррайлист. Это потому, что я не знаю как, и поэтому я здесь.

binary0011 31.10.2018 12:03

Что такое Atleticar?

khelwood 31.10.2018 12:11
0
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужно перебирать входные данные сканера, а не перебирать ArrayList. Тело этого цикла for(int i = 0; i < atleticari.size(); i++) не будет выполнено, поскольку ArrayList только что инициализирован и его размер равен нулю.

while(s.hasNextLine()){
  atleticari.add(new Atleticar(s.next(),s.next(),s.nextInt(),s.nextDouble(),s.next());
  s.nextLine(); // consume new line character
}

Я предполагаю, что у Atleticar есть конструктор, который принимает 5 параметров:

Atleticar(String ime, String pol, Integer vozrast, Double vreme, String zemja)

Учитывая это, мы собираемся перебирать входные данные сканера построчно, преобразовывая отдельные строки в объект Atleticar и добавляя их в atleticari с помощью метода Список # добавить. Типичный ввод строки будет выглядеть примерно так:

lorem ipusm 10 22.4 dolor
sit amet 5 9.99 consectetur

это даст вам 2 объекта Atleticar.

Надеюсь, это поможет.

Спасибо за ответ, я вроде понимаю это, но где мне разместить код while и как добавить переменные с помощью .add () вместо s.next () и т. д. Следует ли мне удалить цикл for и заменить его на while ?

binary0011 31.10.2018 16:40

@ binary0011, да, замените цикл for на цикл while. Что касается переменных, просто сначала назначьте их, а затем используйте в конструкторе.

Anton Balaniuc 31.10.2018 17:13

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