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

如何移除星座识别代码中的break语句?仅限数组、for循环、if else实现

移除break语句的C#星座识别代码修改方案

原代码依赖break语句终止循环来确定星座,现在要移除break,同时保留功能正常,修改后的代码和思路如下:

原代码

Console.WriteLine("ZODIAC SIGN");
Console.WriteLine("");

string[] zodiacsign = { "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn" };
   
int[] signmonth = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int[] signday = { 19, 18, 20, 19, 20, 20, 22, 22, 22, 21, 21, 21 };

Console.Write("Enter the month (1 to 12): ");
int month = int.Parse(Console.ReadLine());
Console.WriteLine("");

Console.Write("Enter the day: ");
int day = int.Parse(Console.ReadLine());
Console.WriteLine("");

string zodiacsignfinal = "";

for (int i = 0; i < zodiacsign.Length; i++)
{
    int currentmonth = signmonth[i];
    int currentday = signday[i];
    int nextmonth = signmonth[(i + 1) % signmonth.Length];
    int nextday = signday[(i + 1) % signday.Length];

    if ((month == currentmonth && day >= currentday) || (month == nextmonth && day < nextday))
    {
        zodiacsignfinal = zodiacsign[i];
        break;
    }
}

if (zodiacsignfinal != "")
{
    Console.WriteLine("Your zodiac sign is: " + zodiacsignfinal);
}
else
{
    Console.WriteLine("YOU ENTERED WRONG DATA");
}

Console.ReadLine();

修改后的代码

Console.WriteLine("ZODIAC SIGN");
Console.WriteLine("");

string[] zodiacsign = { "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn" };
   
int[] signmonth = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int[] signday = { 19, 18, 20, 19, 20, 20, 22, 22, 22, 21, 21, 21 };

Console.Write("Enter the month (1 to 12): ");
int month = int.Parse(Console.ReadLine());
Console.WriteLine("");

Console.Write("Enter the day: ");
int day = int.Parse(Console.ReadLine());
Console.WriteLine("");

string zodiacsignfinal = "";

for (int i = 0; i < zodiacsign.Length; i++)
{
    int currentmonth = signmonth[i];
    int currentday = signday[i];
    int nextmonth = signmonth[(i + 1) % signmonth.Length];
    int nextday = signday[(i + 1) % signday.Length];

    // 只在未找到星座时执行匹配判断,避免覆盖已找到的结果
    if (zodiacsignfinal == "" && ((month == currentmonth && day >= currentday) || (month == nextmonth && day < nextday)))
    {
        zodiacsignfinal = zodiacsign[i];
    }
}

if (zodiacsignfinal != "")
{
    Console.WriteLine("Your zodiac sign is: " + zodiacsignfinal);
}
else
{
    Console.WriteLine("YOU ENTERED WRONG DATA");
}

Console.ReadLine();

修改思路

原来的break是找到匹配的星座后立刻终止循环,现在我们通过在判断条件中加入zodiacsignfinal == "",确保只有在还没找到正确星座的时候才会执行赋值操作。即使循环继续跑完所有12个星座,后续的判断也不会修改已经找到的zodiacsignfinal值,最终结果和原来一致,同时完全移除了break语句,符合任务要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:35:19