Как добавить данные в списки с несколькими массивами? - PullRequest
0 голосов
/ 14 июля 2020
Scanner input = new Scanner(System.in);
System.out.println("Number of Array lists");
int total_arraylists = input.nextInt();
ArrayList<Integer> lists[]=new ArrayList[total_arraylists];
for( int i = 0; i < total_arraylists; i++){   
    lists[i]=new ArrayList<Integer>(i);
    System.out.println("Enter the values");
    while(input.hasNextInt()){
        lists[i].add(input.nextInt());
    }
    System.out.println(lists[i]);
}

Вывод вышеуказанной программы:

Number of Array lists
3
Enter the values
1
2
3
done
[1, 2, 3]
Enter the values
[]
Enter the values
[]

Как мы видим, когда я ввожу любой символ или строку (в данном случае я ввел «готово»), while l oop завершается, а остальные 2 списка массивов остаются пустыми. Я также хочу добавить значения int в оставшиеся списки массивов. Как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 14 июля 2020

Вам понадобится input.next(); после внутреннего l oop, чтобы "съесть" ответ "готово":

        for( int i = 0; i < total_arraylists; i++)
        {   lists[i]=new ArrayList<Integer>(i);
            System.out.println("Enter the values");
            while(input.hasNextInt())
            {
                lists[i].add(input.nextInt());
            }
            input.next();  //<----- Get past the "done"
            System.out.println(lists[i]);
        }

В противном случае, когда вы go вернетесь, чтобы получить данные для в следующем списке input.hasNextInt() увидит, что слово «готово» ожидает чтения; "done", конечно, не int, поэтому hasNextInt() немедленно вернет false. Выполнение input.next(); - удобный способ прочесть этот ожидающий ввод.

0 голосов
/ 14 июля 2020

Добавьте input.nextLine() до и после while l oop:

for( int i = 0; i < total_arraylists; i++){   
    lists[i]=new ArrayList<Integer>(i);
    System.out.println("Enter the values");
    input.nextLine();
    while(input.hasNextInt()){
        int inputNumber = input.nextInt();
        lists[i].add(inputNumber);
    }
    input.nextLine();
    System.out.println(lists[i]);
}

Вывод:

Number of Array lists
3
Enter the values
1
2
3
done
[1, 2, 3]
Enter the values
1
2
3
done
[1, 2, 3]
Enter the values
1
2
3
done
[1, 2, 3]
0 голосов
/ 14 июля 2020

Ваш hasNextInt () всегда возвращает true. Таким образом, все числа добавляются в ваш первый список.

import java.io.*;
import java.util.*;

class Hello{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.println("Number of Array lists");
        int total_arraylists = input.nextInt();
        ArrayList<Integer> lists[]=new ArrayList[total_arraylists];
        for( int i = 0; i < total_arraylists; i++){   
            lists[i]=new ArrayList<Integer>(i);
            System.out.println("Enter the values");
            int array_length = input.nextInt();
            while(array_length-- > 0){
                lists[i].add(input.nextInt());
            }
            System.out.println(lists[i]);
        }
    }
}

Ввод:

3
3
1
2
3
2
4
9
2
9
12

Выход:

Number of Array lists
Enter the values
[1, 2, 3]
Enter the values
[4, 9]
Enter the values
[9, 12]
0 голосов
/ 14 июля 2020
can you explain what is your requirement? Is it you want to just see how to read and add values in list or just to put some random values, check if this helps you.

System.out.println("Number of Array lists");
        int total_arraylists = input.nextInt();
        ArrayList<Integer> lists[] = new ArrayList[total_arraylists];
        ArrayList<Integer> list = null;
        for( int i = 0; i < total_arraylists; i++) {   
            list = new ArrayList<Integer>();
            for(int j=1; j<=3; j++) {
                list.add(j);
            }
            lists[i] = list;
        }
        System.out.println("----- result-----");
        for(int i =0 ;i< total_arraylists;i++) {
            System.out.println(lists[i]);
        }


Output::

Number of Array lists
3
----- result-----
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
...