You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chromebook上用.NET Fiddle运行C#猜数字游戏目标值和提示异常如何解决

问题原因分析

你提供的代码本身逻辑中,目标随机数仅在程序启动时生成1次,运行过程中不会主动变更,你遇到的数字变动、提示异常的情况大概率是以下原因导致的:

  • 每次重新运行.NET Fiddle项目时,程序都会重新生成新的随机数,属于正常的运行逻辑
  • 输入非整数内容时,Convert.ToInt32(feedback)会抛出异常导致程序终止,重新启动后就会生成新的随机数,看起来就像目标数字变了
  • 提示同步变化属于正常逻辑:比如你第一次猜50提示“更低”,第二次猜30提示“更高”,说明目标数字落在30-50之间,不是提示逻辑有问题
代码优化建议
  • 替换goto语句:goto会大幅降低代码可读性,推荐用do-while或while循环实现重复猜测的逻辑
  • 增加输入合法性校验:使用int.TryParse()替代Convert.ToInt32()处理用户输入,遇到非整数内容时提示用户重新输入,避免程序崩溃
  • 修正逻辑和拼写错误:当前随机数生成范围是0-100,和提示的“1到100”不一致,可以改成random.Next(1, 101)生成1-100的整数;另外失败提示里的“nubmer”拼写错误,修正为“number”
  • 优化字符串写法:用C#的字符串插值替代加号拼接字符串,代码可读性更高
优化后参考代码
using System;

public class Program
{
    public static void Main()
    {
        var random = new Random();
        // 生成1-100的随机数,和提示保持一致
        int targetNum = random.Next(1, 101);
        int tries = 5;
        Console.WriteLine("我想了一个1到100之间的数字,你有5次机会猜对它。");
        
        while (tries > 0)
        {
            string input = Console.ReadLine();
            // 校验输入是否为合法整数
            if (!int.TryParse(input, out int guess))
            {
                Console.WriteLine("请输入合法的整数,请重新猜:");
                continue;
            }
            
            if (guess == targetNum)
            {
                Console.WriteLine($"恭喜你猜对了!还剩{tries}次机会。");
                return;
            }
            else if (guess > targetNum)
            {
                tries--;
                Console.WriteLine(tries > 0 ? $"猜大了,你还有{tries}次机会。" : $"猜大了,机会用完了。正确数字是{targetNum}。");
            }
            else
            {
                tries--;
                Console.WriteLine(tries > 0 ? $"猜小了,你还有{tries}次机会。" : $"猜小了,机会用完了。正确数字是{targetNum}。");
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者osyt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:03