2016-11-05 213 views
1

我有问题。我尝试开发 程序问我几次数。我给出数字列表。我尝试将它们保存在List>中。数字可以按空格分开。现在我有这样的代码:for循环列表Java

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 
public class TimeSeries { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    System.out.println("Numbers of rows:"); 
    Scanner in = new Scanner(System.in); 
    int NumberLines = in.nextInt(); 
    in.nextLine(); 
    String Ciag; 
    List<List<Integer>> ll = new ArrayList<List<Integer>>(); 
    List<Integer> list = new ArrayList<Integer>(); 
    for (int i = 0; i < NumberLines; i++) { 
     list.clear(); 
     System.out.println("Add row " +(i+1)); 
     Ciag = in.nextLine(); 
     for (int t=0; t<Ciag.length(); t++) { 

      if(Character.isWhitespace(Ciag.charAt(t))) 
      { 

      } 
      else 
      {list.add(Character.getNumericValue(Ciag.charAt(t))); 
      } 

     } 

     System.out.println(list); 
     ll.add(list); 
     } 

    System.out.println(ll); 

} 


    } 

但我的输出是(例如):

Numbers of rows: 
3 
Add row 1 
0 0 0 
[0, 0, 0] 
Add row 2 
1 2 3 
[1, 2, 3] 
Add row 3 
54 6 8 
[5, 4, 6, 8] 
[[5, 4, 6, 8], [5, 4, 6, 8], [5, 4, 6, 8]] 

但是我需要有[[0,0,0],[1,2,3], [5,4,6,8]]

+0

正在重用的'list'参考,所以你已经添加了相同的'List'多次。不要重复使用该参考。 –

回答

1

问题是,您将相同的list多次添加到ll。 您需要添加不同的列表才能获得所需的行为。 为此,您需要在for循环的每次迭代中创建一个新的清单,而不是清除并重新使用现有的list

更改这些行:

List<List<Integer>> ll = new ArrayList<List<Integer>>(); 
List<Integer> list = new ArrayList<Integer>(); 
for (int i = 0; i < NumberLines; i++) { 
    list.clear(); 

要这样:

List<List<Integer>> ll = new ArrayList<>(); 
for (int i = 0; i < NumberLines; i++) { 
    List<Integer> list = new ArrayList<>();