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

C#代码迭代问题:如何根据鸡的数量对应次数提示输入鸡蛋数

解决根据鸡的数量循环输入鸡蛋数的问题

原代码的问题点

  • 仅处理了chickens == 1的情况,输入大于1的鸡数时程序没有对应逻辑
  • 单只鸡的分支里,循环输入的代码放在switch之后,且只做输入操作,不会处理输入的鸡蛋数
  • switch语句的模式写法不符合C#语法,比如case <= -1这种写法会直接报错

修正后的完整代码

using System;

namespace Q1
{
    public class Q1
    {
        static void Main()
        {
            Console.WriteLine("===========================");

            const string ZeroOrNegativeEggMsg = "You have 0 eggs which equals 0 dozen and 0 eggs left over.";
            const string TwelveEggMsg = "You have 12 eggs which equals 1 dozen and 0 eggs left over.";

            Console.WriteLine("Enter the number of chickens:");
            if (!int.TryParse(Console.ReadLine(), out int chickens) || chickens <= 0)
            {
                Console.WriteLine(ZeroOrNegativeEggMsg);
                Console.WriteLine("===========================");
                return;
            }

            // 循环鸡的数量次,每次输入并处理对应鸡的鸡蛋数
            for (int i = 0; i < chickens; i++)
            {
                Console.Write($"Eggs for chicken #{i+1}: ");
                if (!int.TryParse(Console.ReadLine(), out int eggCount))
                {
                    Console.WriteLine(ZeroOrNegativeEggMsg);
                    continue;
                }

                PrintEggInfo(eggCount, ZeroOrNegativeEggMsg, TwelveEggMsg);
            }

            Console.WriteLine("===========================");
        }

        // 抽离处理鸡蛋数输出的方法,复用逻辑
        static void PrintEggInfo(int eggCount, string zeroMsg, string twelveMsg)
        {
            if (eggCount <= 0)
            {
                Console.WriteLine(zeroMsg);
                return;
            }

            int dozen = eggCount / 12;
            int leftover = eggCount % 12;

            switch (eggCount)
            {
                case 1:
                    Console.WriteLine($"You have {eggCount} egg which equals {dozen} dozen and {leftover} egg left over.");
                    break;
                case 12:
                    Console.WriteLine(twelveMsg);
                    break;
                case 13:
                    Console.WriteLine($"You have {eggCount} eggs which equals {dozen} dozen and {leftover} egg left over.");
                    break;
                default:
                    // 自动区分单复数,覆盖剩余所有情况
                    string eggPlural = eggCount == 1 ? "egg" : "eggs";
                    string leftoverPlural = leftover == 1 ? "egg" : "eggs";
                    Console.WriteLine($"You have {eggCount} {eggPlural} which equals {dozen} dozen and {leftover} {leftoverPlural} left over.");
                    break;
            }
        }
    }
}

关键改进说明

  1. 循环逻辑:用for循环遍历鸡的数量,确保输入次数和鸡的数量完全对应
  2. 输入校验:用int.TryParse替代Convert.ToInt32,避免用户输入非数字导致程序崩溃
  3. 代码复用:把鸡蛋数的处理逻辑抽成独立方法,减少重复代码,后续维护更方便
  4. 语法修正:修正了switch的错误写法,用default分支覆盖所有未明确列举的情况,减少冗余
  5. 体验优化:输入提示加上鸡的序号,让用户清楚当前输入对应哪只鸡的鸡蛋数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:35:32