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

如何在C#宠物养成项目中检测用户输入字符串是否为float类型数值

解决方案

你可以通过C#的float.TryParse()方法实现输入类型校验,该方法无需捕获异常即可判断用户输入是否可转换为float类型,修改后的完整代码如下:

// 宠物喂养功能
static void FeedPet(ref float PetWeight, List<string> FeedList, List<string> ExoList, ref string PetName)
{
    bool repeat = true;
    while (repeat)
    {
        PetWeight = (float)Math.Round(PetWeight, 2);
        Console.WriteLine("|=-=-=-=-=| 喂养 |=-=-=-=-=|");
        Console.Write($"请输入你想要喂给{PetName}的零食数量:");
        // 读取用户输入并校验格式
        string input = Console.ReadLine();
        float FoodAmount;
        // 校验输入是否为有效float
        if (!float.TryParse(input, out FoodAmount))
        {
            Console.WriteLine("请输入数字");
            continue;
        }
        float GainedWeight = (float)(FoodAmount * 0.02f);

        if (FoodAmount == 0)
        {
            Console.WriteLine($"{PetName}今天没有吃到零食");
            Console.WriteLine($"{PetName}当前体重为{PetWeight}kg");
            repeat = false;
        }
        else if (FoodAmount >= 1 && FoodAmount <= 5) 
        {
            // 计算宠物新体重
            PetWeight = FoodAmount * 0.2f + PetWeight;
            // 告知用户宠物增重数值
            Console.WriteLine($"{PetName}增重了{GainedWeight}kg");
            // 记录喂养信息到列表
            FeedList.Add($"{PetName}吃了{FoodAmount}份零食,增重{GainedWeight}kg");
            // 输出当前体重
            Console.WriteLine($"当前体重为:{PetWeight}kg");
            repeat = false;
        }
        else
        {
            Console.WriteLine($"{PetName}一次最多只能吃5份零食,请输入0-5之间的数字");
        }
    }
}
核心修改点
  • 将原代码中直接使用float.Parse()转换输入的逻辑替换为float.TryParse()校验,转换失败时直接输出「请输入数字」提示并重新进入输入流程
  • 修复了原代码的分支逻辑缺陷:原代码中输入0时,执行完第一个if分支后仍会触发后续else分支的范围提示,改为else if结构后避免了该问题
  • 补充了Math.Round()的返回值赋值:原代码中Math.Round(PetWeight, 2)执行后没有将结果赋值回PetWeight,不会生效,修改后可正常保留两位小数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:24:03