You need to enable JavaScript to run this app. C# while循环生成随机数触发终止条件后仍无法退出问题求解
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 11:27:04