2016-11-19 77 views
0

我有一个程序,用户可以输入数字到一个列表框,用户也得到和选项进行排序列表框。我不允许使用任何数组或容器或列表,只需修改项目列表框属性并使用转换和解析。我想通过一个冒泡排序要做到这一点,虽然只显示在列表框中一次排序按钮被点击是0,1,2,3,4的数字...冒泡排序的列表框不工作C#

private void sorted() 
    {  
     int a = Convert.ToInt32(lstHoldValue.Items.Count); 
     int temp = Convert.ToInt32(lstHoldValue.Items[0]); 
     for (int i = 0; i < a; i++) 
     { 
      for (int j = i + 1; j < a; j++) 
      { 
       if (Convert.ToInt32(lstHoldValue.Items[i]) > Convert.ToInt32(lstHoldValue.Items[j])) 

       { 
        temp = Convert.ToInt32(lstHoldValue.Items[i]); 
        (lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[j]); 
        (lstHoldValue.Items[j]) = temp; 
       } 
      } 
     } 
     lstHoldValue.Items.Clear(); 
     for (int i = 0; i < a; i++) 
     { 
      Convert.ToInt32(lstHoldValue.Items.Add("\t" + i)); 
     } 
    } 

用户如何输入值列表框

private void btnAdd_Click(object sender, EventArgs e) 
{   
    string text = "\t" + txtInitialise.Text; 
     if (this.index < MAX_ITEMS) // MAX_ITEMS or 10 
     { 
      Convert.ToInt32(lstHoldValue.Items.Count); 
      int dnum; 
      if (int.TryParse(txtInitialise.Text, out dnum)) 
      { 
       Convert.ToInt32(lstHoldValue.Items.Add("\t" + dnum)); 
       index++; 
       txtInitialise.Text = ""; 
+0

欢迎堆栈溢出!它看起来像你需要学习使用调试器。请帮助一些[互补调试技术](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之后仍然有问题,请随时返回更多详情。 –

+0

对不起,我很新的这一切,我仍然不知道什么是错:( –

+0

可以帮助乔C 2 –

回答

0

好像刚刚添加的列表项的索引名单,这是它总是返回0的原因 - 4(5元)。更新了仅使用列表项进行排序的答案。

更新时间:

最大的项目允许插入到列表框中:

const int MAX_ITEMS = 10; 

你的排序方法,工作正常,虽然你清除到底列表框,让你失去了排序,如使用for循环在列表框内完成交换:

private void sorted() 
{ 
    int a = Convert.ToInt32(lstHoldValue.Items.Count); 
    int temp = Convert.ToInt32(lstHoldValue.Items[0]); 

    for (int i = 0; i < a; i++) 
    { 
     for (int j = i + 1; j < a; j++) 
     { 
      if (Convert.ToInt32(lstHoldValue.Items[i]) > Convert.ToInt32(lstHoldValue.Items[j])) 

      { 
       temp = Convert.ToInt32(lstHoldValue.Items[i]); 
       (lstHoldValue.Items[i]) = "\t" + Convert.ToInt32(lstHoldValue.Items[j]); 
       (lstHoldValue.Items[j]) = "\t" + temp; 
      } 
     } 
    } 
} 

添加按钮点击:

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    int index = 0; 
    if (index < MAX_ITEMS) // MAX_ITEMS set to 10 
    {     
     int dnum; 
     if (int.TryParse(txtInitialise.Text, out dnum)) 
     { 
      lstHoldValue.Items.Add("\t" + dnum); 
      index++; 
      txtInitialise.Text = ""; 
     } 
    } 
} 

排序按钮点击:

private void btnSort_Click(object sender, EventArgs e) 
{ 
    sorted(); 
} 
+0

阿卜杜勒你好,感谢你的帮助,但我不允许使用任何容器或列表,只允许修改的项目列表框属性,并使用解析和converting.I做了这个节目使用数组,但现在不得不重新做:( –

+0

所以做ü管理使用做列表框只? – abdul

+0

我彻底改变了代码,它的工作原理,但没有完全肯定,如果我的工作范围之内。你会如何做呢? –