2016-11-05 5 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

문제는 여러 번에 ll동일한 list를 추가한다는 것이다. 원하는 동작을 얻으려면 다른 목록을 추가해야합니다. 그 경우 기존 list을 지우고 다시 사용하는 대신 for 루프의 각 반복마다 새로운 새 목록을 만들어야합니다.

변경이 라인 : 여기에

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<>();