0から2までの乱数を生成するループを作成しようとしていて、この番号を配列のインデックスとして使用しています。これは3回実行され、次の各番号は異なっていなければなりません(例えば、私はint配列{1,2,3}を持っています)プログラムの中に入れば、3-1-2, 3-2-1, 2-3-1, 1-2-3, 2-1-3
などを出力しますが、決して3-1-3
など。このケース3には、繰り返される。ここ forループのロジックに問題があります
int ans1 = getRand();
int ans2 = getRand();
int ans3 = getRand();
public int getRand()
{
done = true;
while (done)
{
tempAns = rand.Next(0, 2);
done = false;
foreach (int i in answersDone)
{
if (tempAns == i)
{
done = true;
}
}
}
answersDone.Add(tempAns);
return tempAns;
}
私はこのコードが無限ループに入って実行して、私はなぜわからないとき
通常、我々ループ 'ながら、 (!完了) '。 –
'answersDone'には何がありますか? – BackDoorNoBaby
あなたの 'foreach'では 'if'が最終的に真実になり、その中であなたが 'done'を真実にするので、あなたのwhileは決して終了しません。 – pooyan