为何这段C# while循环无法正常运行?求技术排查
你的C# while循环问题分析及修复方案
问题根源拆解
- 重复创建Random实例导致随机数一致:你新建了两个
Random对象,默认构造函数依赖系统时钟做种子,短时间内创建的实例种子完全相同,生成的随机数序列也一模一样,这会让number和number1几乎必然相等。其实一个Random实例就足够生成所有需要的随机数。 - 循环逻辑自相矛盾:你的需求是"两个数不等时停止循环",也就是要在两数相等时继续重试,当前while的条件
number == number1是对的,但循环内部直接写了break,导致循环刚启动就强制退出,根本没机会重新生成随机数直到符合条件。 - 未在循环内更新随机数:就算去掉
break,现有代码也不会重新生成新的number和number1,一旦初始值相等,会直接陷入死循环。 - 无效的分支代码:因为只有
number == number1才会进入循环,所以分支里的number != number1永远为假,这两段if-else代码完全不会执行,属于冗余内容。
修复后的代码
Random rnd = new Random(); int number = rnd.Next(0, 6); int number1 = rnd.Next(0, 6); // 两数相等时继续循环,直到生成不等的数才退出 while (number == number1) { // 重新生成一对新的随机数 number = rnd.Next(0, 6); number1 = rnd.Next(0, 6); } // 循环退出后执行后续打印操作 Console.WriteLine($"number: {number}, number1: {number1}"); // 如果需要判断大小,直接在循环外处理即可 if (number > number1) { Console.WriteLine("number 大于 number1"); } else { Console.WriteLine("number 小于 number1"); }
内容的提问来源于stack exchange,提问作者rinzlet walker
相关产品推荐
相关产品推荐

