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

C#实现单次猜测猜数字游戏 代码逻辑错误排查求助

C# 单次猜数字游戏问题修复

代码问题汇总

  • 语法错误:else (guess > 10)不符合C#语法规则,else后不能直接接判断条件,需要配合if关键字使用。
  • 分支顺序错误:「猜大了」「猜小了」的判断放在「答案接近」判断之前,所有非正确猜测都会先命中大小判断分支,导致接近答案的提示永远无法触发。
  • 参数不匹配:提示文本要求用户猜1-100范围的数字,但随机数生成调用rd.Next(1, 10)只会生成1-9的整数,范围校验阈值也写为10,和提示完全不符。
  • 逻辑冗余:当前代码没有编写任何循环结构,本身就只会执行一次输入读取、结果判断流程,不需要用break终止——break仅能跳出循环或switch结构,无循环时使用没有任何效果。要实现单次猜测后结束的需求,只需要在所有判断逻辑末尾加一行结束提示,代码执行完会自动退出。
  • 额外冗余:随机数定义后多了一层无意义的独立大括号,不影响运行但属于多余写法。

修复后可直接运行代码

Console.WriteLine("gissa talet\nDu ska nu gissa ett tal mellan 1 och 100, så varsågod..\nskriv in ett tal");
var str = Console.ReadLine();
int guess = Convert.ToInt32(str);
// 生成1-100范围随机数,Next方法上界为排他值,传101才能覆盖到100
Random rd = new Random();
int rand_num = rd.Next(1, 101);

// 优先校验输入范围
if (guess < 1 || guess > 100)
{
    Console.WriteLine("Du måste skriva in ett tal mellan 1 och 100!");
}
else
{
    if (guess == rand_num)
    {
        Console.WriteLine("Ditt Tal är rätt. grattis!");
    }
    else
    {
        // 先触发接近提示
        if (Math.Abs(guess - rand_num) <= 3)
        {
            Console.WriteLine("Du är dock nära och det bränns");
        }
        // 再提示大小关系
        if (guess < rand_num)
        {
            Console.WriteLine("Ditt tal är för litet. gissa på ett större tal");
        }
        else
        {
            Console.WriteLine("Ditt tal är för stort. gissa på ett mindre tal");
        }
    }
}

// 输出结束提示,程序执行完毕自动终止
Console.WriteLine("the end");

注:当前代码直接用Convert.ToInt32转换输入,如果用户输入非数字内容会抛出异常,初学阶段可以后续再补充输入校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:30:44