C# 使用inputbox时IndexOutfrange BubbleSort
它一直困扰着我好几个小时,因为它总是在数字[i]处返回0,我无法找出问题所在。代码适用于不同的程序,但我必须对其进行更改,使其具有自定义数组大小,而这正是一切都出错的时候。 任何帮助都会很好。 提前谢谢C# 使用inputbox时IndexOutfrange BubbleSort,c#,bubble-sort,indexoutofrangeexception,C#,Bubble Sort,Indexoutofrangeexception,它一直困扰着我好几个小时,因为它总是在数字[i]处返回0,我无法找出问题所在。代码适用于不同的程序,但我必须对其进行更改,使其具有自定义数组大小,而这正是一切都出错的时候。 任何帮助都会很好。 提前谢谢 int[] numbers = new int[Convert.ToInt16(TxtArray.Text)]; int j = 0; for (j = numbers.Length; j >= 0; j--) { int i = 0; for (i = 0; i <
int[] numbers = new int[Convert.ToInt16(TxtArray.Text)];
int j = 0;
for (j = numbers.Length; j >= 0; j--)
{
int i = 0;
for (i = 0; i <= j - 1; i++)
{
string NumbersInput = Microsoft.VisualBasic.Interaction.InputBox("Enter Numbers to be sorted",
"Numbers Input", "", -1, -1);
numbers[i] = Convert.ToInt16(NumbersInput);
//returns 0 in if statement
if (numbers[i] < numbers[i + 1])
{
int intTemp = 0;
intTemp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = intTemp;
}
}
}
for (int i = 0; i < numbers.Length; i++)
{
LstNumbers.Items.Add(numbers[i]);
}
int[]numbers=newint[Convert.ToInt16(TxtArray.Text)];
int j=0;
对于(j=numbers.Length;j>=0;j--)
{
int i=0;
对于(i=0;i抛开您处理文本框的奇怪方式不谈,即使没有文本框,您抛出异常的问题也会发生,因为它位于您的内部循环中:
for (i = 0; i <= j - 1; i++)
numbers[0]
存在,并且numbers[1]
存在,因此此迭代过程将进行得很好,i
将递增
现在i==1
。现在循环检查其边界条件。iprivate void按钮1\u单击(对象发送方,事件参数e)
{
int-sizeofarayint=Convert.ToInt32(arraySize.Text);
int[]数组=新的int[sizeOfArrayInt];
字符串编号=arrayValues.Text;
字符串[]numbersplit=numbers.Split(',');
整数计数=0;
foreach(numbersplit中的字符串)
{
int值;
bool parse=Int32.TryParse(字符,输出值);
if(值!=null)
{
数组[计数]=值;
}
计数++;
}
array=this.SortArray(数组);
foreach(数组中的int项)
{
this.listBox.Items.Add(item);
}
}
私有int[]排序(int[]数组排序)
{
//int[]sortedArray=新int[arrayToSort.Length];
int count=arrayToSort.Length;
对于(int j=count;j>=0;j--)
{
int i=0;
对于(i=0;我请澄清您的具体问题或添加其他详细信息,以突出显示您需要的内容。很难确切地说出您的要求。哪一行引发异常?什么是“始终返回0”?请参阅页面以获取澄清此问题的帮助。代码也没有意义,您正在从文本框初始化数组,但在您的循环中,您要求对数字进行排序???代码有异味。我使用文本框允许自定义数组大小,并且在if statemnet if(numbers[I]if (numbers[i] < numbers[i + 1])
private void button1_Click(object sender, EventArgs e)
{
int sizeOfArrayInt = Convert.ToInt32(arraySize.Text);
int[] array = new int[sizeOfArrayInt];
string numbers = arrayValues.Text;
string[] numbersSplit = numbers.Split(',');
int count = 0;
foreach (string character in numbersSplit)
{
int value;
bool parse = Int32.TryParse(character, out value);
if (value != null)
{
array[count] = value;
}
count++;
}
array = this.SortArray(array);
foreach (int item in array)
{
this.listBox.Items.Add(item);
}
}
private int[] SortArray(int[] arrayToSort)
{
//int[] sortedArray = new int[arrayToSort.Length];
int count = arrayToSort.Length;
for (int j = count; j >= 0; j--)
{
int i = 0;
for (i = 0; i <= j - 2; i++)
{
if (arrayToSort[i] < arrayToSort[i + 1])
{
int intTemp = 0;
intTemp = arrayToSort[i];
arrayToSort[i] = arrayToSort[i + 1];
arrayToSort[i + 1] = intTemp;
}
}
}
return arrayToSort;
}