我正在
<无效的赋值运算符
在此代码段中
int length=0;
int i=0;
for ( Iterator<String> t_Number = keyset.iterator(); t_Number.hasNext()&& i<length;)
{
String key = (String)t_Number.next();
row = sheet.createRow(rownum++);
Object[] objArr = (Object[])excel_data.get(key);
int cellnum = 0;
Object[] array;
length = (array = objArr).length; continue;
Object obj = array[i];
Cell cell = row.createCell(cellnum++);
if ((obj instanceof Double)) {
cell.setCellValue(((Double)obj).doubleValue());
} else {
cell.setCellValue((String)obj);
}
i++;
}
有人可以让我知道解决这个问题吗?
答案 0 :(得分:0)
for
循环的结构是:
for (initialization; termination; increment)
您的增量步骤为i < length
,这不是修改任何内容的语句。
假设您也要检查该条件,您应该使用&&
而不是将其放入增量步骤:
for(Iterator<String> t_Number = keyset.iterator();
t_Number.hasNext() && i<length;/* no increment */)
如果这样做,请确保在循环内部执行某些操作(或添加实际的增量步骤),这会更改keyset
或i
,以便终止条件最终为false
为了响应您的更新,新问题来自这一行:
length = (array = objArr).length; continue;
continue
意味着跳过循环重复的其余部分;它只会递增,返回到块的开头,并继续运行。由于你无条件地调用continue
,它将始终被执行,并且在它到达之后循环中没有任何东西。删除continue
,或在其前加if(/* some condition */)
。
答案 1 :(得分:0)
在if
语句的3个部分的最后一部分中,Java需要一个语句,但您拥有的只是一个表达式i<length
。我得到的编译器错误是“不是声明”。
如果您打算将此作为继续迭代的另一个条件,则将其添加到条件(中间)部分。
for (Iterator<String> t_Number = keyset.iterator(); t_Number.hasNext() && i<length; )
(假设代码的实际主体中的某些内容正在调用t_Number.next()
并在迭代中向前移动。)
答案 2 :(得分:0)