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

C#中while循环如何等待用户输入 加密货币模拟控制台应用问题

问题根源

你代码的死循环问题来自两个逻辑缺失:

  • 循环内输出选项提示后,没有读取用户选择币种的输入逻辑,初始input值为0,永远触发不了if (input == 1)的分支,自然不会走到Console.ReadLine()等待输入的逻辑,循环会一直无阻塞打印提示内容。
  • 你之前试的Console.ReadKey()只能读取单个字符,没办法支持多位数的购买数量输入,不符合需求。

修复后的完整代码

int input = 0;
string inputst;
int maxcoins = 100;

while (maxcoins > 0)
{
    // 先读取用户选择的币种编号
    Console.WriteLine("Type a key number to show what you want to buy");
    Console.WriteLine("Key Numbers: Monke Coin 1 | Buy None 00 |");
    Console.WriteLine("You can buy " + maxcoins + " more coins this turn");
    inputst = Console.ReadLine();
    // 加输入合法性校验,避免用户输非数字报错
    if (!int.TryParse(inputst, out input))
    {
        Console.WriteLine("请输入合法的数字编号");
        continue;
    }

    if (input == 1)
    {
        Console.WriteLine("How Much Monke Coin Do you want to buy? Enter number 0-" + maxcoins);
        inputst = Console.ReadLine();
        int buyCount = 0;
        while (!int.TryParse(inputst, out buyCount) || buyCount < 0 || buyCount > maxcoins)
        {
            Console.WriteLine($"输入不合法,请输入0到{maxcoins}之间的数字");
            inputst = Console.ReadLine();
        }
        maxcoins -= buyCount;
        Console.WriteLine("剩余可购买额度:" + maxcoins);
    }
    // 匹配提示里的Buy None 00选项
    else if (input == 00)
    {
        break;
    }
    else
    {
        Console.WriteLine("输入的编号不存在,请重新输入");
    }
}

主要改动说明

  • 在输出选项提示后新增了Console.ReadLine()读取用户选择的币种编号,让循环有等待输入的逻辑,不会空跑
  • 用int.TryParse代替Convert.ToInt32做输入转换,避免用户输入非数字内容导致程序崩溃
  • 补充了购买数量的范围校验,确保用户输入的购买数量不会超过当前可买额度
  • 补充了输入00直接结束购买的逻辑,匹配你提示里的选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:00