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

C#骰子游戏编写独立方法实现重玩、跳出循环报错如何解决

骰子游戏代码报错修复

现有代码编译/运行异常原因

  • 方法定义位置错误:C#不支持在方法内部嵌套定义其他顶级方法,原代码将PlayGame()写在Main()方法内部,直接触发编译报错。
  • 无效关键字使用:break语句仅能用于跳出当前所在的循环、switch结构,原代码PlayAgain()方法内无外层循环,直接写break会报编译错误。
  • 逻辑流程不通:原代码PlayGame()内写了while(true)死循环,程序启动后会一直重复掷骰子,永远走不到Main()方法里后续的PlayAgain()调用,重玩逻辑完全无法触发。
  • 骰子取值范围错误:Random.Next(2,4)仅会返回2、3两个值,不符合常规六面骰子1-6的点数范围(Next方法的第二个参数是排他上界,不会被返回)。
  • 冗余调用:原代码Main()里单独调用RollDice()没有实际作用,掷骰子逻辑已经在游戏流程内触发,不需要单独调用。

修复后可直接运行的代码

using System;

class DiceProgram
{
    // 全局随机数实例,避免重复实例化导致随机数序列重复
    public static Random random = new Random();

    static void Main(string[] args)
    { 
        Console.WriteLine("Hey! Welcome to Tina's Dice Game");
        Console.WriteLine("Let's Start!");
        PlayGame();
    }

    public static void PlayGame()
    {
        int Dice1 = RollDice();
        int Dice2 = RollDice();

        Console.WriteLine("Dice 1 = " + Dice1);
        Console.WriteLine("Dice 2 = " + Dice2);
        Console.WriteLine("I got " + Dice1 + " and " + Dice2);

        if (Dice1 % 2 == 0 && Dice2 % 2 == 0)
        {
            Console.WriteLine("Evens are better than odds");
        }
        else
        {
            Console.WriteLine("Odds are still cool.");
        }

        // 单局结束后询问是否重玩
        PlayAgain();
    }

    public static void PlayAgain()
    {
        Console.WriteLine("Do you want to play it again? (Yes or No)");
        // 处理用户输入带空格、大小写不一致的情况
        string answer = Console.ReadLine().Trim().ToLower();

        if (answer == "yes")
        {
            PlayGame();
        }
        // 输入非yes直接退出,不需要break
    }

    public static int RollDice()
    {
        // 六面骰子范围1-6,Next上界不包含所以传7
        int Dice = random.Next(1, 7);
        return Dice;
    }   
}

关键调整说明

  • 所有方法统一挪到类层级,移除Main内部的嵌套方法定义,解决基础语法错误。
  • 删除PlayGame()内的死循环,单局逻辑执行完后自动调用重玩判断,保证流程能走到重玩逻辑。
  • 移除PlayAgain()内无效的break语句,用户输入非Yes时直接结束方法调用,程序自然退出。
  • 修正骰子点数生成范围,符合常规六面骰规则。
  • 增加输入容错处理,自动忽略用户输入的首尾空格、大小写差异,输入yes/YES/Yes都能正常触发重玩。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:15:41