首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.IndexOutOfRangeException :索引超出了数组的界限

System.IndexOutOfRangeException :索引超出了数组的界限
EN

Stack Overflow用户
提问于 2012-10-19 01:49:20
回答 4查看 7.5K关注 0票数 0

我有以下数组:

代码语言:javascript
运行
复制
public string reArrange(string s)
{
    char[] array = s.ToCharArray();
    int length = array.Length;
    char[] arranged = new char[length];

    for (int i = 0; i < length; i++)
    {
        int newposition = length - i;
        arranged[newposition] = array[i];
    }

    return new string(arranged);
}

但是,上面的方法会引发以下错误:

System.IndexOutOfRangeException:索引超出了数组的界限。

那有什么不对吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-19 01:51:57

i为零时,可以访问索引newposition处的数组,该值等于length;这超出了数组的最后一个有效索引,即通过length-10

这将解决问题:

代码语言:javascript
运行
复制
int newposition = length - i - 1;
票数 5
EN

Stack Overflow用户

发布于 2012-10-19 01:53:58

假设长度是10个字符。在循环的第一次迭代中,newposition =10-0= 10。这个索引超出了排列数组的界限。

另外,请参阅this post有关反转字符串的内容。从那个岗位..。

代码语言:javascript
运行
复制
public static string Reverse( string s )
{
    char[] charArray = s.ToCharArray();
    Array.Reverse( charArray );
    return new string( charArray );
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-19 01:52:00

你要走远了,

代码语言:javascript
运行
复制
for (int i = 0; i < length-1; i++)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12966265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档