我正在尝试制作一个程序,它接受一个骰子的所有组合(完成该部分),但现在我试图采取所有组合并将它们放在一个数组中的总数((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是所有添加的组合。我真的无法找到问题的来源。
答案 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永远不会递增,导致第三个循环无限运行。