我试图将用户输入存储到ArrayList of 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]]。
提前谢谢你!
发布于 2014-10-13 05:08:54
从上面的评论,我有点清楚,你想做什么。
你在终点站输入了1 2 3 4 5 6 1 8。在您的程序中,您在-上使用了split,所以我提供了一些解决问题的指南。
首先,在-上拆分输入,使数组分离
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循环。
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);
}发布于 2014-10-13 04:58:15
尝试这种类型的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);
}发布于 2014-10-13 04:56:46
我认为这是由于您试图在控制台上输入错误的输入,因为当我硬编码理想的输入到您的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]]https://stackoverflow.com/questions/26333027
复制相似问题