Java 嵌套';对于未正确初始化的循环

Java 嵌套';对于未正确初始化的循环,java,Java,变量j初始化为172,这是它应该迭代的单词列表的长度。wordList是ArrayList,谢谢您的帮助 for (i = 0; i < wordList.size(); i++) { row0 = wordList.get(i); ara = breakWord(row0); my2Dara[0] = ara; for (j = 0; j < wordList2.size(); j++);

变量j初始化为172,这是它应该迭代的单词列表的长度。wordList是ArrayList,谢谢您的帮助

for (i = 0; i < wordList.size(); i++)
     {
        row0 = wordList.get(i);
        ara = breakWord(row0);
        my2Dara[0] = ara;

            for (j = 0; j < wordList2.size(); j++);
        {
           row1 = wordList2.get(j);
           ara = breakWord(row1);
           my2Dara[1] = ara;

                for (k = 0; k < wordList.size(); k++);
           {
              row2 = wordList.get(k);
              ara = breakWord(row2);
              my2Dara[2] = ara;

                    for (l = 0; l < wordList.size(); l++);
              {
                 row3 = wordList.get(l);
                 ara = breakWord(row3);
                 my2Dara[3] = ara;

                 for (m = 0; m < wordList.size(); m++);
                 {
                    row4 = wordList.get(m);
                    ara = breakWord(row4);
                    my2Dara[4] = ara;

                    if(isSolution(my2Dara, wordList) == true)
                       print2Dara(my2Dara);             
                 }
              }
           }
        }
     } 
for(i=0;i
您被Java忠实继承的C/C++ism刺痛了——它能够通过在for、while或if后面加分号来立即结束for、while或if

代码如下所示:

for(whatever);
{
   doThing()
}
实际上是这样做的:

1) 设置for-loop-do初始值设定项,检查是否可以执行第一个循环

2) 分号告诉编译器“这是for循环的结束”,因此for循环在不执行任何操作的情况下进行激烈的迭代,直到条件的计算结果为false

3) 大括号{}中的部分随后执行一次-这不是编译器错误,因为允许您出于任何原因在任何时候或多或少地放置大括号对(这用于声明一个新范围,有点像在一个if中创建一个新变量范围-不是if,而是大括号!)

之所以2)是可能的,是因为if、for、while等在语法上定义为只执行一件事——下一条语句。A
是一个不做任何事情的语句——可以将其视为
doSomething()不带
doSomething()
部件
{doX();doY();}
也是一个语句-大括号可以被认为是将许多语句定义为一个语句的语法。编译器正在忠实地执行您键入的内容

2)和3)的结果是,所有这些东西在语法上都是有效的,通常不是您所期望的:

for(whatever);

if(true);

if(false);
{
    crashProgram(); //This will always execute! Good prank to play on computer science undergrads
}

{
   doThing(); //don't need an if, for, while or anything else to open {}s
}

{
 {
  {
    doThing(); //open as many as you like!
  }
 }
}

;;;;;;; //do a whole lot of nothing

删除for循环语句末尾的分号。问题是什么?我的代码状态j正在遍历wordList2。这只是我试图克隆ArrayList以防出现问题。假设它在相同的ArrayList上迭代,因为for loopsj的其余部分肯定初始化为0。只需不断增加它,直到它等于wordList.size()。还有,k,l和m。那太愚蠢了……很抱歉浪费你的时间。谢谢你,阿比。