2016-11-05 118 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<>();