Java For循环未正确递增

Java For循环未正确递增,java,for-loop,Java,For Loop,我有这段代码,但当else分支执行时,I不会递增,我无法找出原因 while(rs.next()){ tableAktivityBuilder.append("<tr><td><input type=\"text\" class=\"rowAktivita\" value=\""+rs.getString("name")+"\"/></td><td>"); StringBuilder tmpBuilder = new Strin

我有这段代码,但当else分支执行时,
I
不会递增,我无法找出原因

while(rs.next()){
  tableAktivityBuilder.append("<tr><td><input type=\"text\" class=\"rowAktivita\" value=\""+rs.getString("name")+"\"/></td><td>");
  StringBuilder tmpBuilder = new StringBuilder("<select class=\"course\"><option value=\"-1\" type=\"\"></option>");
  for(int i = 0; i < prurezove.length+odborne.length; i++){
    int idKompetence = rs.getInt("id_kompetence");
    if(rs.getString("typ_kompetence").equalsIgnoreCase("p") && i < prurezove.length){
        if(idKompetence == prurezoveIds[i]){
          tmpBuilder.append("<option value=\""+idKompetence+"\" type=\"p\" selected=\"selected\">"+prurezove[i]+"</option>");
        }else{
          tmpBuilder.append("<option value=\""+idKompetence+"\" type=\"p\">"+prurezove[i]+"</option>");
       }
    }else{
      log.info("kompetence = o");
      log.info("i = "+i);
      int awa = prurezove.length+odborne.length;
      log.info(""+awa);
      if(idKompetence == odborneIds[x]){
          tmpBuilder.append("<option value=\""+idKompetence+"\" type=\"o\" selected=\"selected\">"+odborne[x]+"</option>");
      }else{
          tmpBuilder.append("<option value=\""+idKompetence+"\" type=\"o\">"+odborne[x]+"</option>");
      }
      x++;
    }
  }
  tableAktivityBuilder.append(tmpBuilder);
  tableAktivityBuilder.append("</select></td><td>");
  if(rs.getInt("cena") != 0){
    tableAktivityBuilder.append(rs.getInt("cena"));
  }
  tableAktivityBuilder.append("</td></tr>");
}


感谢您的帮助

当i==4时,执行两次out while循环,内部循环始终到达else{},然后退出。

执行两次out while循环,内部循环始终到达else{}当i==4然后退出。

这只是你的out while循环执行两次,你的内部循环总是到达else{}当i==4然后退出。

这只是你的out while循环执行两次,你的内部循环总是到达else{}当i==4,然后退出。

然后它停止,还是永远在i=4处继续循环?这仅仅意味着else分支在
while(rs.next())
循环的每次迭代中只执行一次。使用调试器,逐个执行语句以准确理解发生了什么。@OGHaza它停止是因为IndexArrayOutOfBounds,其他人说的除外,IndexArrayOutOfBounds可能是因为x的增量太高。尝试打印x和odbourne.length。如果x==odbourne.length,那么当您引用odbourne[x]@OGHaza时,您将得到一个边界外的值。Alex Suo的答案是正确的。无论如何谢谢你!然后它会停止还是永远在i=4处继续循环?这仅仅意味着else分支在
while(rs.next())
循环的每次迭代中只执行一次。使用调试器,逐个执行语句以准确理解发生了什么。@OGHaza它停止是因为IndexArrayOutOfBounds,其他人说的除外,IndexArrayOutOfBounds可能是因为x的增量太高。尝试打印x和odbourne.length。如果x==odbourne.length,那么当您引用odbourne[x]@OGHaza时,您将得到一个边界外的值。Alex Suo的答案是正确的。无论如何谢谢你!然后它会停止还是永远在i=4处继续循环?这仅仅意味着else分支在
while(rs.next())
循环的每次迭代中只执行一次。使用调试器,逐个执行语句以准确理解发生了什么。@OGHaza它停止是因为IndexArrayOutOfBounds,其他人说的除外,IndexArrayOutOfBounds可能是因为x的增量太高。尝试打印x和odbourne.length。如果x==odbourne.length,那么当您引用odbourne[x]@OGHaza时,您将得到一个边界外的值。Alex Suo的答案是正确的。无论如何谢谢你!然后它会停止还是永远在i=4处继续循环?这仅仅意味着else分支在
while(rs.next())
循环的每次迭代中只执行一次。使用调试器,逐个执行语句以准确理解发生了什么。@OGHaza它停止是因为IndexArrayOutOfBounds,其他人说的除外,IndexArrayOutOfBounds可能是因为x的增量太高。尝试打印x和odbourne.length。如果x==odbourne.length,那么当您引用odbourne[x]@OGHaza时,您将得到一个边界外的值。Alex Suo的答案是正确的。无论如何谢谢你!哦,我的。。。我应该打自己一巴掌。。。我花了大约一个小时试图找出我做错了什么。。。非常感谢。我会尽快接受你的回答,这只是经验:-)祝你好运,快乐!哦,我的。。。我应该打自己一巴掌。。。我花了大约一个小时试图找出我做错了什么。。。非常感谢。我会尽快接受你的回答,这只是经验:-)祝你好运,快乐!哦,我的。。。我应该打自己一巴掌。。。我花了大约一个小时试图找出我做错了什么。。。非常感谢。我会尽快接受你的回答,这只是经验:-)祝你好运,快乐!哦,我的。。。我应该打自己一巴掌。。。我花了大约一个小时试图找出我做错了什么。。。非常感谢。我会尽快接受你的回答,这只是经验:-)祝你好运,快乐!
kompetence = o
i = 4
5
kompetence = o
i = 4
5