我有以下数组:
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:索引超出了数组的界限。
那有什么不对吗?
发布于 2012-10-19 01:51:57
当i
为零时,可以访问索引newposition
处的数组,该值等于length
;这超出了数组的最后一个有效索引,即通过length-1
的0
。
这将解决问题:
int newposition = length - i - 1;
发布于 2012-10-19 01:53:58
假设长度是10个字符。在循环的第一次迭代中,newposition =10-0= 10。这个索引超出了排列数组的界限。
另外,请参阅this post有关反转字符串的内容。从那个岗位..。
public static string Reverse( string s )
{
char[] charArray = s.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
}
发布于 2012-10-19 01:52:00
你要走远了,
for (int i = 0; i < length-1; i++)
https://stackoverflow.com/questions/12966265
复制相似问题