2016-10-12 6 views
2

ランダムに生成された10個の数字を入れる必要があるリストボックスが2つあります。リストボックス1とリストボックス2の合計を計算し、どちらが大きいか。私は各リストボックスで異なる数字を取得しますが、何らかの理由でリストボックスの合計は常に同じです。リストボックスごとに合計が異なるようにするにはどうしたらいいですか? これは私のコードです。あなたは誤植コピーの古い話+を貼り付け)のコードで持ってランダムに生成された2 x 10の数値は同じです。C#

private void btnGo_Click(object sender, EventArgs e) 
    { 

     Random random = new Random(); 

     listBox1.Items.Clear(); 
     listBox2.Items.Clear(); 


     for (int i = 0; i < 10; i++) 
     { 

      int nummer = random.Next(20); 
      int nummer2 = random.Next(20); 
      listBox1.Items.Add(nummer); 
      listBox2.Items.Add(nummer2); 
     } 




     if (addListbox1() > addListbox2()) 
     { 
      textBox1.Text = "Listbox1 heeft de hoogste waarde namelijk " + Convert.ToString(addListbox1()); 
      listBox1.BackColor = Color.Green; 
      listBox2.BackColor = Color.Red; 


     } 

     else 
     { 

      textBox1.Text = "Listbox2 heeft de hoogste waarde namelijk " + Convert.ToString(addListbox2()); 
      listBox1.BackColor = Color.Red; 
      listBox2.BackColor = Color.Green; 


     } 



    } 
    private int addListbox1() 
    { 
     int listbox1total = 0; 

     for (int k = 0; k < listBox1.Items.Count;) 
     { 
      listbox1total += Convert.ToInt32(listBox1.Items[k++]); 
     } 
     return listbox1total; 
    } 

    private int addListbox2() 
    { 
     int listbox2total = 0; 
     int k = 0; 

     while(k < listBox2.Items.Count) 
     { 
      listbox2total += Convert.ToInt32(listBox1.Items[k++]); 

     } 
     return listbox2total; 
    } 
+2

:: 'listbox2total + = Convert.ToInt32(するためには

デザインを変更、このようなエラーを避けるため、は自分で、抽出方法をコピーしないでください –

答えて

3

:合計でなければなりません

listbox2total += Convert.ToInt32(listBox1.Items[k++]); 

listbox2totalすなわち

// please, notice "listBox2.Items" 
listbox2total += Convert.ToInt32(listBox2.Items[k++]); 

する必要がありますlistBox2.Itemsです。 *あなたは*のタイプミスを作った

// Easiest, but not thread safe 
private static Random random = new Random(); 

private static void FillBox(ListBox box, int count = 10) { 
    box.Items.Clear(); 

    box.Items.AddRange(Enumerable 
    .Range(0, count) 
    .Select(x => (Object) random.Next(20)) 
    .ToArray()); 
} 

private static int SumBox(ListBox box) { 
    return box.Items 
    .OfType<Object>() 
    .Sum(x => Convert.ToInt32(x)); 
} 

... 

FillBox(listBox1); 
FillBox(listBox2); 

if (SumBox(listBox1) > SumBox(listBox2)) { 
    ... 
} 
+0

@Matosh:* copy + paste *しばしば危険なものです。あなた自身をコピーせずにメソッドを抽出してください。コードを読みやすくデバッグする方がはるかに簡単です。 –

関連する問題