2011-09-04 18 views
1

因此,如果ArrayList不存在,我就得到了将数字1-9添加到单独的ArrayList中的代码。但是,即使我打印ArrayLists(并获得所有正确的数字),当我打印ArrayList的.size时,它会给我1而不是9.我希望你能理解我的问题。下面的代码:ArrayList无法显示正确大小的问题

ArrayList[][] tillatnaSiffror = new ArrayList[9][9]; 

    for(int i=0;i<9;i++){ 
     for(int ruta=0;ruta<9;ruta++){ 

      if(tillatnaSiffror[i][ruta] == null){ 
       for(int add=1;add<=9;add++){ 
        tillatnaSiffror[i][ruta] = new ArrayList<Integer>(); 
        tillatnaSiffror[i][ruta].add(add); 
        System.out.println(tillatnaSiffror[i][ruta]); 
       } 
       System.out.println(tillatnaSiffror[i][ruta].size()); 
      } 
     } 
    } 

这给了我这个(当然,尽管九次):[1][2][3][4][5][6][7][8][9]1

现在我想知道,为什么我得到的1而不是9当我打印.size?

+0

** tillatnaSiffror **是什么意思,它是什么语言,我想知道? –

+1

'tillatnaSiffror'意思是“允许的数字”。我认为菲利普正在写一个soduko求解器。 – aioobe

回答

8

因为你名单在每个迭代

tillatnaSiffror[i][ruta] = new ArrayList<Integer>(); 

即创建一个新的列表,丢掉前一个为你添加的每个数字复位!

尝试移出列表的创建:

,--> tillatnaSiffror[i][ruta] = new ArrayList<Integer>(); 
|  for(int add=1;add<=9;add++){ 
'-----< 
      tillatnaSiffror[i][ruta].add(add); 
      System.out.println(tillatnaSiffror[i][ruta]); 
     } 

Ideone.com demo


作为一个方面说明,我会建议不要在这儿阵列,并使用Java集合所有办法。考虑使用像List<List<Set<Integer>>>这样的结构。

+1

对于ASCII艺术和在线IDE链接+1,顶尖 – Asaf

+0

Aaah!当然,我会因为缺乏睡眠而责备它;)非常感谢您指出这一点,并且我会将您的想法与Collections一起考虑! –