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

字符数组金字塔遍历至最后元素时触发索引越界,需用while循环解决

解决字符数组构建金字塔时的索引越界问题

错误原因分析

  1. 循环条件错误:原代码用charArr[i] != 0作为循环终止条件,这是C/C++的字符串终止逻辑,但C#中字符串转成的char数组不存在末尾的空终止符('\0')。当i递增到等于数组长度时,访问charArr[i]必然触发索引越界。
  2. 逻辑不符合预期:内层循环j < i会导致第一行(i=0)无输出,不符合金字塔每行递增一个字符的需求。

修正后的代码(使用while循环)

Console.WriteLine("Write word");
string s = Console.ReadLine();
char[] charArr = s.ToCharArray();

int i = 0;
while (i < charArr.Length) // 确保i始终在数组有效索引范围内
{
    int j = 0;
    while (j <= i) // 调整条件,输出从第0个到第i个字符
    {
        Console.Write(charArr[j]);
        j++;
    }
    Console.WriteLine();
    i++;
}

关键修正点

  • 外层循环:改用i < charArr.Length作为终止条件,直接限制i的最大值为数组最后一个元素的索引(charArr.Length - 1),彻底避免越界。
  • 内层循环:将j < i改为j <= i,保证第一行(i=0)能输出第一个字符,后续每行依次多输出一个字符,符合金字塔的结构要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:35:25