ArrayList Scanner UserInput的Java ArrayList

时间:2014-10-13 04:46:57

标签: java arraylist

我正在尝试将用户输入存储到ArrayList的ArrayList中。

ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();

例如,将其存储为[[1,2,3],[4,5],[6,1,8]]
以下是我的代码,

    Scanner input = new Scanner(System.in);
    System.out.println("Enter a set of numbers:");
    String line = input.nextLine();
    String[] numbers = line.split(" +");

    ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> a1 = new ArrayList<Integer>();

    for(int i=0; i<numbers.length; i++) {
        a1.add(new Integer(numbers[i]));

    }
    a.add(a1);

但是当我将它输入终端时,它变为[[1,2,3,4,5,6,1,8]] 提前谢谢!

5 个答案:

答案 0 :(得分:1)

尝试使用此类型的i / p及以下代码。

i/p : 1 2 3-4 5-6 1 8

String[] list= line.split("-");

ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0; i<list.length; i++) {

        String[] number= line.split(" ");
        ArrayList<Integer> a1 = new ArrayList<Integer>();
        for(int i=0; i<numbers.length; i++) {
            a1.add(new Integer(numbers[i]));

        }
        if(a1.length>0)
           a.add(a1);
}

答案 1 :(得分:1)

从上面的评论中我清楚地知道你想做什么。

您在终端上输入了1 2 3 4 5 6 1 8。在您的程序中,您使用了-上的拆分,因此我提供了一些指导来解决您的问题。

首先,在-上拆分输入以分离数组

String[] numbersArray = line.split("-"); 
//e.g. input 1 2 3 + 4 5 6 + 1 8
//here you will get numbersArray as [1 2 3,4 5 6,1 8]
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();

现在,将内部数组的各个元素用于循环

for(int i=0; i<numbersArray.length; i++) {

    String[] numbers= numbersArray[i].split(" "); //split on " "
    //here you will get [1,2,3] for first iteration and 2nd [4,5,6], last [1,8]

    ArrayList<Integer> a1 = new ArrayList<Integer>();
    for(int j=0; j<numbers.length; j++) {
        a1.add(new Integer(numbers[j]));
        //here adding inner array list elements

    }
    //add to main array list 
    a.add(a1);
}

答案 2 :(得分:0)

我认为这是由于您尝试在控制台上输入错误的输入,因为当我对ArrayList的理想输入进行硬编码时,它会按预期打印结果。这是我写的示例代码:

private static void doPrint(){
    List<List<Integer>> sample=new ArrayList<List<Integer>>();
    ArrayList<Integer> a1 = new ArrayList<Integer>();
    a1.add(12);
    a1.add(23);
    ArrayList<Integer> a2 = new ArrayList<Integer>();
    a2.add(22);
    a2.add(28);
    sample.add(a1);
    sample.add(a2);

    System.out.println(sample);
}

这是输出:

[[12, 23], [22, 28]]

答案 3 :(得分:0)

您尝试使用的方式将无效,因为您将所有元素添加到内部列表。

您可以尝试以下内容。您需要创建以下数组。

public static void main(String[] args) {
    ArrayList<ArrayList<Integer>> a = new ArrayList<>();
    int[] arr1={1,2,3}; // you need to create these arrays
    int[] arr2={4,5};
    int[] arr3={6,1,8};
    a.add(getList(arr1));
    a.add(getList(arr2));
    a.add(getList(arr3));
    System.out.println(a);
}

public static ArrayList<Integer> getList(int[] arr){
    ArrayList<Integer> list = new ArrayList<>();
    for (int anArr : arr) {
        list.add(anArr);
    }
    return list;
}

答案 4 :(得分:0)

您只向a添加一个列表,这就是为什么它似乎是列表a中的一个元素。如果你想在列表a中有多个元素,那么就这样使用。

for(int i=0; i<numbers.length; i++) {
        a1.add(new Integer(numbers[i]));
}
a.add(a1);
a.add(a1);

输出根据您提问中的输入

[[1,2,3,4,5,6,1,8], [1,2,3,4,5,6,1,8]]