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

C#骰子游戏对局结束后endgame()方法无法正常调用问题求助

问题根本原因
  • 调用逻辑本身没有错误,endgame()方法实际上已经正常执行了,你误认为无法调用的核心原因是:方法内所有结果输出完成后,没有设置任何等待用户操作的逻辑,程序执行完endgame()后会直接退出,控制台窗口瞬间闪退,导致你看不到endgame()输出的对局结果。
  • 额外隐藏问题:你使用Random.Next(1,6)生成骰子点数,该方法的第二个参数是不包含的上限值,所以当前代码最多只能生成1-5的点数,永远无法得到6,不符合骰子的数值规则。
修复方案
  1. 先修改endgame()方法,在末尾添加等待输入逻辑,避免窗口闪退:
public void endgame()
{
    if (sClass.player > sClass.com)
    {
        Console.WriteLine("Player Win! Player vs Computer");
        Console.WriteLine($"               ({sClass.player}) vs ({sClass.com})");
    }
    else if (sClass.player < sClass.com)
    {
        Console.WriteLine("Computer Win! Player vs Computer");
        Console.WriteLine($"               ({sClass.player}) vs ({sClass.com})");
    }
    else
    {
        Console.WriteLine("Its a draw! Player vs Computer");
        Console.WriteLine($"                ({sClass.player}) vs ({sClass.com})");
    }
    // 新增该行,等待用户按回车后再关闭窗口
    Console.ReadLine();
}
  1. 修复随机数生成范围错误,修改sClass类中的两个随机数调用逻辑:
public static void playgame()
{
    // 把上限从6改成7,才能生成1-6的点数
    comguess = r.Next(1, 7);
    playerdie = rolldie();
}

public static int rolldie()
{
    // 把上限从6改成7,才能生成1-6的点数
    int die = r.Next(1, 7);
    return die;
}
  1. 可选优化:补全输入非法判断,避免用户输入0、负数或者非数字时报错或逻辑异常,把原来的输入判断修改为:
sClass.guess = 0;
// 增加异常处理,避免非数字输入崩溃
if (!int.TryParse(Console.ReadLine(), out sClass.guess) || sClass.guess < 1 || sClass.guess >6)
{
    Console.WriteLine("Only enter number ranges from 1 - 6");
    Console.ReadLine();
    Console.Clear();
    goto start;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:03