无效的分配操作员

时间:2015-11-09 20:48:00

标签: java

我正在

  

<无效的赋值运算符

在此代码段中

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++;
}

有人可以让我知道解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

for循环的结构是:

for (initialization; termination; increment)

您的增量步骤为i < length,这不是修改任何内容的语句。

假设您也要检查该条件,您应该使用&&而不是将其放入增量步骤:

for(Iterator<String> t_Number = keyset.iterator(); 
    t_Number.hasNext() && i<length;/* no increment */)

如果这样做,请确保在循环内部执行某些操作(或添加实际的增量步骤),这会更改keyseti,以便终止条件最终为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)

i<length

是不必要的。

阅读Ways to iterate over a list in java