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; } } } }
关键改进说明
- 循环逻辑:用
for循环遍历鸡的数量,确保输入次数和鸡的数量完全对应 - 输入校验:用
int.TryParse替代Convert.ToInt32,避免用户输入非数字导致程序崩溃 - 代码复用:把鸡蛋数的处理逻辑抽成独立方法,减少重复代码,后续维护更方便
- 语法修正:修正了switch的错误写法,用default分支覆盖所有未明确列举的情况,减少冗余
- 体验优化:输入提示加上鸡的序号,让用户清楚当前输入对应哪只鸡的鸡蛋数
内容的提问来源于stack exchange,提问作者TP JJB
相关产品推荐
相关产品推荐

