此代码按预期工作:它迭代外部 ArrayList(覆盖),并迭代内部 ArrayList(covArrayList),当内部 ArrayList 包含“noBaseData”时,将 5 个空元素添加到末尾。
//add empty elements for coverage data when noBaseData found:
for(int i = 0; i<coverage.size(); i++)
{
if(coverage.get(i).contains("noBaseData"))
{
for(int j=0; j<5; j++)
{
coverage.get(i).add("");
}//end for(int j)
} //end if(!coverage)
} //end for(i)
此代码无法按预期工作:
//add empty elements when coveragy by only one base station:
for(int i = 0; i<coverage.size(); i++)
{
if(coverage.get(i).size()<6);
{
for(int j=0; j<2; j++)
{
coverage.get(i).add("");
}//end for(int j)
}//end if(coverage)
期望结果:迭代外层ArrayList(coverage),迭代内层ArrayLists(covArrayList),当内层ArrayList的.size()小于6(也试过5&7)时,添加两个空元素结尾。
实际结果:它向每个内部 ArrayList 添加了两个空元素。
插入“System.out.println(coverage.get(i).size());” BEFORE 'if(coverage.get(i).size()<6)' 返回内部 ArrayLists 的正确大小(5 或 7)。
在 'if(coverage...);' 之前插入 "System.out.println(coverage.get(i).toString();" 证实了 .size() 报告。
在循环返回 .size()/toString() 之后放置 'System.out...' 并添加了空元素。
ArrayList 覆盖示例内容:
[[AA-123-12345-SP1.SSF, , 100, 100, guug04914003.zip], [AA-123-23451-SP1.SSF, noBaseData, , , , , ], [AA-123-23451-SP2. SSF, , 100, 4, guug04914003.zip, 100, guug04914022.zip]]
"if(coverage.get(i).lastIndexOf()<6)" 不会编译。信息:
.java:208:错误:接口 List 中的方法 lastIndexOf 不能应用于给定类型;if(coverage.get(i).lastIndexOf()<4); ^ 必需:找到对象:无参数原因:实际参数列表和形式参数列表的长度不同,其中 E 是类型变量:E 扩展接口列表 1 中声明的对象错误
我难住了。有人有什么想法吗?
编辑: rgettman 指出了我的错误。我的 if 语句后面有一个分号。我羞愧地低下头!!