我需要一些关于此代码的帮助。我正在玩这个几个小时,什么也没得到。所以我向你们寻求帮助。
Array [b]总是返回超出范围的异常。我不知道为什么。
{
int[] Array = new int[6];
Array[0] = c;
Array[1] = d;
Array[2] = e;
Array[3] = f;
Array[4] = g;
int a = 0;
int b = 1;
int temp = 0;
for (int counter = 0; counter < Array.Length; counter++)
{
for (int counter2 = 0; counter2 < Array.Length; counter2++)
{
if (Array[a] > Array[b])
{
Console.WriteLine("{0} is Greater Than {1}, Swapping ({0},{1})", Array[a], Array[b]);
temp = Array[a];
Array[a] = Array[b];
Array[b] = temp;
Console.WriteLine("");
}
else
{
Console.WriteLine("{0} is Less Than {1}, Retain Value Position", Array[a], Array[b]);
Console.WriteLine("");
}
a += 1;
b += 1;
}
a = 0;
b = 0;
}
for (int counter = 0; counter < Array.Length; counter++)
{
Console.Write(Array[counter] + " ");
}
Console.WriteLine("Final Position");
return a;
}
谢谢,这是我的代码,我希望你们中的任何一个人都可以帮助我。
答案 0 :(得分:0)
您正在将一个元素与下一个元素进行比较,因此如果您已到达最后一个元素,则没有&#34; next&#34;元素和你超出界限。
将内循环更改为Length - 1
以阻止此操作:
for (int counter = 0; counter < Array.Length; counter++)
{
for (int counter2 = 0; counter2 < Array.Length - 1; counter2++)
// ...
}
答案 1 :(得分:0)
在递增b之前,检查你是否在数组的最后一个索引中,因为你从1开始而不是0,所以如果在循环遍历最后一个数组索引时输入块,它将超出范围。 / p>