循环序列制作无限期程序

时间:2017-01-18 21:13:03

标签: java

我正在尝试制作一个程序,它接受一个骰子的所有组合(完成该部分),但现在我试图采取所有组合并将它们放在一个数组中的总数((1,1)= 2,(2,4)= 6)我最终会把它变成游戏。但是当我试图组织它们时,我创建了一个无限循环,看起来它应该无限运行。

    for (int dice1 = 1; dice1 < 7; dice1++)
     for (int dice2 = 1; dice2 < 7; dice2++)            
         for (int j = 0; j < 6;)
         {
            msg = "";
            msg = "(" +dice1 + ", " + dice2 + ")";
            arrayDice[dice1 - 1][dice2 - 1] = msg;
            add = dice1 + dice2 - 2;
            arrayAdd[add][j] = msg;
            if (add == 10 - j)
                j = j + 1;
         }

arrayDice只是所有组合的数组,而arrayAdd是所有添加的组合。我真的无法找到问题的来源。

1 个答案:

答案 0 :(得分:2)

程序中的第三个for循环是无限运行的循环。在第三个循环中,您没有递增计数器&#39; j&#39;在for语句中,但是你在循环体内递增它。然而,在第三个循环的主体中唯一的地方,柜台&#39; j&#39;正在增加的范围是if - if (add == 10 - j)。由于你以j = 0开始这个循环,因此第一次迭代时表达式10 - 0 = 10,而变量“添加”#9;是1 + 1 -2 = 0.因此,此表达式if (add == 10 - j)的计算结果为false。所以j永远不会增加。此表达式中唯一的另一个变量是&#39; add&#39;在你退出第三个循环之前,它不会被改变。所以简而言之,表达式if (add == 10 - j)永远不会计算为true,因此j永远不会递增,导致第三个循环无限运行。