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

C#循环触发break后未打印输出,两段代码错误原因排查

C#代码问题排查与修正

核心错误点

两个版本的代码存在以下共性问题:

  • 索引初始逻辑错误:两个版本均将循环变量i初始化为1,未给array_num[0]赋值,该位置会保留int类型默认值0。首次判断会将你输入的第一个数和0做对比,若第一个输入小于0会误触发break,逻辑不符合预期。
  • 执行顺序错误:代码先将当前输入的数存入数组、拼接到输出字符串,再判断是否小于前一个数。触发break条件时,不符合要求的数(你示例中的42)已经被加入输出字符串,最终打印内容会多出这个错误值。
  • 输出格式错误:直接拼接数字字符串未添加逗号分隔,最终输出结果是连续数字拼接,和你预期的逗号分隔格式不符。

for循环版本额外存在索引越界风险:

  • 循环条件写为i <= array_num.Length,C#数组索引从0开始,长度为50的数组有效索引范围是0~49,当i=50时访问array_num[i]会抛出IndexOutOfRangeException导致程序崩溃。

修正后的代码示例(while版本)

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("please enter an integer number in two digits");
        int[] array_num = new int[100];
        string nu = "";
        int i = 0;
        
        // 先处理第一个输入,无需判断
        array_num[i] = int.Parse(Console.ReadLine());
        nu += array_num[i].ToString();
        i++;
        
        while(i < 100)
        {
            int current = int.Parse(Console.ReadLine());
            // 先判断再决定是否存入
            if (current < array_num[i - 1])
            {
                break;
            }
            // 符合条件再拼接、存数组
            nu += "," + current.ToString();
            array_num[i] = current;
            i++;
        }
        Console.WriteLine("the numbers is " + nu);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:57:04