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

C#如何将方法内获取的int类型用户输入传递到另一个方法

C#方法参数传递解决方案

核心修改

你只需要为DeckCreation方法定义一个int类型的形参,就可以直接接收传入的playerDraw整数变量,全程不需要做任何类型转换,修改后的完整代码如下:

public void PlayerChooseDraw()
{
    Deck deck = new Deck();
    Console.WriteLine("Number of cards in the deck is: " + deck.CardCount);
    Console.WriteLine("-------------");
    Console.WriteLine("How many cards do you want to draw? You can draw between 1 to 26");

    int playerDraw = Convert.ToInt32(Console.ReadLine());

    if (playerDraw > 26) {
        Console.Clear();
        Console.WriteLine("ERROR: Maximum cards to draw is 26 !");
        PlayerChooseDraw();
    }
    else if (playerDraw < 1) {
        Console.Clear();
        Console.WriteLine("ERROR: Minimum cards to draw is 1 !");
        PlayerChooseDraw();
    }
    else {
        Console.Clear();
        DeckCreation(playerDraw);         
    }
}

// 方法签名处添加int类型的形参即可直接接收传入的整数
public void DeckCreation(int playerDraw) 
{
    Console.WriteLine(playerDraw);
}

优化建议

你当前使用递归处理用户输入错误的逻辑,如果用户连续多次输入非法值,可能触发栈溢出问题,同时还缺少非数字输入的校验,用户输入字母等内容时会直接抛出异常,建议改用循环实现输入校验,优化后的代码示例:

public void PlayerChooseDraw()
{
    Deck deck = new Deck();
    Console.WriteLine("Number of cards in the deck is: " + deck.CardCount);
    Console.WriteLine("-------------");
    
    int playerDraw;
    // 循环校验输入,避免递归栈溢出风险
    while(true)
    {
        Console.WriteLine("How many cards do you want to draw? You can draw between 1 to 26");
        // 增加非数字输入校验
        if(!int.TryParse(Console.ReadLine(), out playerDraw))
        {
            Console.Clear();
            Console.WriteLine("ERROR: Please enter a valid number!");
            continue;
        }
        if(playerDraw > 26)
        {
            Console.Clear();
            Console.WriteLine("ERROR: Maximum cards to draw is 26 !");
        }
        else if(playerDraw < 1)
        {
            Console.Clear();
            Console.WriteLine("ERROR: Minimum cards to draw is 1 !");
        }
        else
        {
            break;
        }
    }
    Console.Clear();
    DeckCreation(playerDraw);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:33:01