2016-11-19 79 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

我徹底改變了代碼,它的工作原理,但沒有完全肯定,如果我的工作範圍之內。你會如何做呢? –