我正在尝试将用户输入存储到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]]
提前谢谢!
答案 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]]