我有以下数组:
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:索引超出了数组的范围。
那可能是什么错误?
答案 0 :(得分:4)
当i
为零时,您将访问索引为newposition
的数组,该数组等于length
;这是一个超出数组最后一个有效索引的索引,0
到length-1
。
这将解决问题:
int newposition = length - i - 1;
答案 1 :(得分:2)
假设长度为10个字符。 在循环的第一次迭代中,newposition = 10 - 0 = 10.此索引超出了排列数组的范围。
另请参阅this post有关反转字符串的信息。从那篇帖子......
public static string Reverse( string s )
{
char[] charArray = s.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
}
答案 2 :(得分:1)
你要走远了,
for (int i = 0; i < length-1; i++)
答案 3 :(得分:1)
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 - 1;
arranged[newposition] = array[i];
}
return new string(arranged);
}