2012-12-19 27 views
0

我有一个方法返回对象的ArrayList。我返回创建的数组列表,其中充满了许多对象,我通过用相同的方法打印它们来检查它们是否在那里。当我在另一种方法中使用该Arraylist作为参数时,它会给我一个错误,就像数组列表为空。返回ArrayList并在另一种方法中使用它

可以使用方法getFila和getColumna说出对象的位置(y,x)。 而失败的方法(实际上什么都不做):

public static ArrayList<Position> getTrayectory (ArrayList<Position> aListPos){ 
     for (int ii = 0; ii < aListPos.size();ii++) { 
      System.out.println("(" + aListPos.get(ii).getFila() + "," + aListPos.get(ii).getColumna()+")"); 
     } 
     return aListPos; 
    } 

我返回ArrayList中有许多物体里面,但我不知道什么是与该发生的事情。

摘要:

1- I have a method that returns an ArryList 
2- I create a new Arraylist with method in 1 
3- I use new method with Arraylist in 2 as parameter. 

(4-) Nothing happens, because new arraylist in 2 look empty. 

谁能帮助我在这个过程中?

+2

你可以显示确切的错误和你的数组列表填充的代码? –

+0

我现在不在电脑上。数组列表的填充方式有多重要?我知道这是充满的,因为我可以通过它打印每个元素的值来巡回。无论如何,我贴这里的代码。 – AgusDG

+0

@AgusDG你可以解释这两个项目请'aListPos.get(ii).getFila()'和'aListPos.get(ii).getColumna()' – Smit

回答

1

如果您在提供它的(unseen)方法中创建ArrayList,是否返回它?还是你在修改一个参数?

换句话说,你这样做:

ArrayList<Position> myArrayList = generateArrayList(); // or whatever you call it 

还是要这样:

ArrayList<Position> myArrayList; 
generateArrayList(myArrayList); 
ArrayList<Position> result = getTrayjectory(myArrayList); 

这样做的第二个版本将无法正常工作,因为当你内部创建一个对象一个方法,它可以转义方法边界的唯一方法是由该方法返回。否则,当方法结束时它超出范围。

3

如果您使用的是像eclipse这样的IDE,您可以轻松地在有问题的代码中插入一个断点,并且可以“观察”每个变量的内容。

所以你可以找出你的数组列表变空的确切点。

+1

这应该作为评论没有回答。你没有向他解释为什么会发生这种情况。 – Smit

1

我认为你的ArryList包含位置对象。我不完全知道它只是我的猜测。

 System.out.println("(" + aListPos.get(ii).getFila() + "," 
     + ListPos.get(ii).getColumna()+")"); 

取而代之。试试这个

 System.out.println("(" + (aListPos.get(ii)).getFila() + "," 
     + (ListPos.get(ii)).getColumna()+")"); 
相关问题