C# while循环生成随机数触发终止条件后仍无法退出问题求解
核心错误清单
- while循环语法错误:你在while条件末尾多写了一个分号
;,这会直接让循环体变成空语句,后面大括号内的代码和while循环完全无关,自然无法按预期终止。 - 循环条件逻辑错误:你用了逻辑或
||,意味着只要两个条件满足一个就会继续循环,正确应该用逻辑与&&,表示「未生成1且循环次数未达到10次」才继续循环;另外randomNumber.Next()默认生成的是0到int最大值的随机数,不是你需要的1-10区间。 - 随机数重复调用问题:你每次调用
randomNumber.Next()都会生成新的随机数,输出的数值和后续判断是否为1的数值根本不是同一个,自然会出现明明输出了1却没触发终止条件的问题。 - 终止判断逻辑错误:第二个if条件写反了,
loopCounter <=10会导致第一次循环就直接触发break输出未找到1的提示,正确逻辑应该是循环次数满10次时才输出未找到的提示。 - 拼写错误:
recieved为错误拼写,正确拼写为received。
修正后代码
// 初始化随机数生成器、计数器、存储生成的数值的列表 Random randomNumber = new Random(); int loopCounter = 0; List<int> numList = new List<int>(); // 循环最多执行10次 while (loopCounter < 10) { loopCounter++; // 单次循环只生成一次随机数,存入变量复用,Next上限为开区间,填11才能取到10 int current = randomNumber.Next(1, 11); numList.Add(current); // 命中主哨兵条件:生成1 if (current == 1) { Console.WriteLine(string.Join(" ", numList)); Console.WriteLine($"已在第 {loopCounter} 次尝试时生成数字1"); break; } // 命中次哨兵条件:满10次未生成1 if (loopCounter == 10) { Console.WriteLine(string.Join(" ", numList)); Console.WriteLine("10次尝试均未生成数字1"); } Thread.Sleep(100); }
内容的提问来源于stack exchange,提问作者ShadowTaipan
相关产品推荐
相关产品推荐

