2017-04-19 12 views
0

ちょっと私は電卓を使っていますが、アルゴリズムのうち2つが正しく動作していません。 1. 私の履歴(リストボックス)には、電卓から数値が得られ、最小の数値を見つけるための底があります。私は鉱山のコードでエラーが発生します。 2. 番号を昇順または降順にソートする[ソート]ボトムが必要です。私はlistbox1.sortedとして試してみましたが、私はそれをアルファベットとして動作させるだけです。Windowsフォーム計算アルゴリズム。ソートと最高/最低番号

nr.1で何が間違っているのか分かっていたり、ソートアルゴリズムを修正する方法がわかっている場合はお知らせください。

int count = 0; 
    int tal = 0; 
    double Mtal = 999999999999999999; 
    bool hit; 
    int cunt = 0; 
private void button26_Click(object sender, EventArgs e) 
    { 
     while (count < 100) 
     { 
      foreach (var Listboxitem in listBox1.Items) 
      { 
       hit = false; 
       if (Convert.ToDouble(Listboxitem) < Mtal) 
       { 

        Mtal = Convert.ToDouble(Listboxitem); 
        hit = true; 
       } 
       count = count + 1; 
       if (hit) 
       { 
        cunt = count; 
       } 
      } 
     } 
     this.listBox1.SelectedIndex = cunt - 1; 

    } 
+0

は、暗黙的に型 'int型' から 'ダブル' に変換できません。明示的な変換が存在する(キャストが欠落していますか?エラーは私がbtwを取得しますか? –

+0

@EmilSjödinここに投稿したコードを実行していますので、問題は再現できません.. – EpicKip

答えて

1

リストボックスの値は整数です。変数Mtalの宣言をdoubleからintに変更してください。そして、Convert.ToDouble()の代わりにint.Parse()を使用します。これは、既存の最小値と比較するための整数が必要なためです。

int count = 0; 
int tal = 0; 
int Mtal = int.MaxValue; 
bool hit; 
int cunt = 0; 
private void button26_Click(object sender, EventArgs e) 
{ 
    while (count < 100) 
    { 
      foreach (var Listboxitem in listBox1.Items) 
      { 
      hit = false; 
      if (int.Parse(Listboxitem.ToString()) < Mtal) 
      { 

       Mtal = int.Parse(Listboxitem.ToString()); 
       hit = true; 
      } 
      count = count + 1; 
      if (hit) 
      { 
       cunt = count; 
      } 
     } 
    } 
    this.listBox1.SelectedIndex = cunt - 1; 

} 

そして私はList<ListItem>でLINQを使用することができ示唆している注文について:このような 何かがあなたのために働く必要があります。

private void button_OrderByDescencing_Click(object sender, EventArgs e) 
{ 
     List<ListItem> items= new List<ListItem>(); 
     foreach (ListItem a in lb.Items) 
     { 
      items.Add(a); 
     } 
     items=items.OrderByDescending(a => int.Parse(a.Value)).ToList(); 
     foreach (ListItem a in items) 
     { 
      listBox1.Items.Add(a); 
     } 

} 

そして昇順:あなたたとえば

private void button_OrderByAscending_Click(object sender, EventArgs e) 
{ 
     List<ListItem> items= new List<ListItem>(); 
     foreach (ListItem a in lb.Items) 
     { 
      items.Add(a); 
     } 
     items= items.OrderBy(a => int.Parse(a.Value)).ToList(); 
     foreach (ListItem a in items) 
     { 
      listBox1.Items.Add(a); 
     } 

} 
+0

@Tadej (引数1: 'オブジェクト'から '文字列'に変換することはできません) –

+0

@EmilSjödin編集内容を参照してください。両方の問題を解決する必要があります。 – swdev95

関連する問題