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

如何在C#中通过单循环实现特定字符串序列的遍历输出?

用C#单循环实现指定序列输出的方案

问题说明

需要输出序列:LOWEST LOW MEDIUM HIGH HIGHEST HIGHEST HIGH MEDIUM LOW LOWEST,希望通过单循环实现,当前代码运行后输出为:LOWEST LOW MEDIUM HIGH HIGHEST HIGH MEDIUM LOW LOWEST(缺少一个HIGHEST)。

可行性结论

完全可以通过单循环实现,你的思路方向是对的,只需调整循环范围和索引计算逻辑即可得到目标输出。

原代码问题分析

原代码存在两个关键问题:

  • 循环总次数为(phases.Length -1)*2 +1 = 9次,但目标序列需要输出10个元素,循环次数不足;
  • 索引计算在i超过数组长度时,直接从HIGH开始往回走,漏掉了第二次HIGHEST的输出。

修正后的代码

方案一(逻辑清晰版)

class Program {
    static void Main()
    {
        string[] phases = ["LOWEST", "LOW", "MEDIUM", "HIGH", "HIGHEST"];
        // 目标序列是正向遍历+反向遍历,共10个元素
        int totalElements = phases.Length * 2;
        for (int i = 0; i < totalElements; i++)
        {
            int index;
            if (i < phases.Length)
            {
                // 前5次循环:正向取索引0-4
                index = i;
            }
            else
            {
                // 后5次循环:从索引4往回取到0
                index = totalElements - 1 - i;
            }
            Console.Write(phases[index] + " ");
        }
    }
}

方案二(代码简化版)

利用Math.Min简化索引计算逻辑,效果与方案一完全一致:

class Program {
    static void Main()
    {
        string[] phases = ["LOWEST", "LOW", "MEDIUM", "HIGH", "HIGHEST"];
        int totalElements = phases.Length * 2;
        for (int i = 0; i < totalElements; i++)
        {
            // 取i和(totalElements-1 -i)中的较小值,自动实现先增后减的索引逻辑
            int index = Math.Min(i, totalElements - 1 - i);
            Console.Write(phases[index] + " ");
        }
    }
}

运行结果

修正后的代码运行后会输出目标序列:

LOWEST LOW MEDIUM HIGH HIGHEST HIGHEST HIGH MEDIUM LOW LOWEST

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:48:26