2016-02-26 42 views
0

在我的for-loop下面,我试图添加所有car IDSpersons相关的一定状态。数组未填充:添加方法的使用不正确?

我的代码编译并运行,但是arrayList的大小:listOfCarIds剩余的是。即似乎没有添加任何东西

在我如何实现这个过程中是否存在错误?

for(int i=0 ; i < personsWithStatus.size() ; i++) 
{ 
    idOfCarRelatingToPerson = personsWithStatus.get(i).getCarId(); 

    List<String> listOfCarIds = new ArrayList(); 

    listOfCarIds.add(idOfCarRelatingToPerson); 
} 
+0

您正在每次迭代中创建一个新的'listOfCarIds'并放弃它。也许你打算在循环之前初始化* field *而不是局部变量。 –

回答

6

声明你ArrayList外面ArrayList中您已声明里面的for循环将初始化每次和有只环内的范围。

List<String> listOfCarIds = new ArrayList(); 
for(int i=0 ; i < personsWithStatus.size() ; i++) { 
     idOfCarRelatingToPerson = personsWithStatus.get(i).getCarId(); 
     listOfCarIds.add(idOfCarRelatingToPerson); 
      } 
+1

这是为什么? – java123999

+0

@ java123999每次循环访问代码中的列表时,都会声明一个新列表并将其添加到该列表中。循环完成后,该列表已超出范围并且无法访问。 – Michael

+0

@ java123999我添加了更多描述,让你明白 – Pragnani

1

你正在循环中声明你的ArrayList。每次遍历循环时,它都会将listOfCarIDs重置为空的ArrayList。

在循环外部声明ArrayList,并只使用循环来添加它。