C# 使用inputbox时IndexOutfrange BubbleSort

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 <

它一直困扰着我好几个小时,因为它总是在数字[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 <= 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
。现在循环检查其边界条件。
i
private 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;
}