令牌“ <”上的语法错误,无效的AssignmentOperator,位于iterator.hasNext()中

时间:2019-05-15 10:31:27

标签: java

在iterator.hasNext()中,它显示一个错误。

令牌“ <”上的语法错误,无效的AssignmentOperator,位于iterator.hasNext()

 JSONArray build;
 int i;
    for (; iteratorData.hasNext(); i < build.length())
    {
      -------------
      -------------
      i++;
    }

3 个答案:

答案 0 :(得分:4)

您在for循环的递增/递减子句中放置了一个条件。

您可能打算将其放在condition子句中:

int i = 0;
for (; iteratorData.hasNext() && i < build.length(); )
{
    -------------
    -------------
    i++;
}

甚至更好:

int i = 0;
for (; iteratorData.hasNext() && i < build.length(); i++)
{
    -------------
    -------------
}

或(如果不需要在循环外使用i的最终值):

for (int i = 0; iteratorData.hasNext() && i < build.length(); i++)
{
    -------------
    -------------
}

答案 1 :(得分:1)

根据JLS § 14.14,此基本for语句的语法错误:

BasicForStatement:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

BasicForStatementNoShortIf:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) StatementNoShortIf

ForInit:
  StatementExpressionList 
  LocalVariableDeclaration

ForUpdate:
  StatementExpressionList

StatementExpressionList:
  StatementExpression {, StatementExpression}

基本for语句的第三个元素,即第二个分号之后的元素,在JLS中称为“ ForUpdate”。 ForUpdate需要 statement expression ,而i < build.length()不是语句表达式。

由于在每次迭代结束时要递增i,因此可以将该语句用作ForUpdate语句:

for (...; ...; i++) {
    ...
}

答案 2 :(得分:0)

您到底想做什么?但是我认为您想做的是:

while(iteratorData.hasNext()) {
    for (int i = 0; i < build.length(); i++)
    {
      -------------
      -------------
      i++;
    }
}