Matosh - 1 year ago 66
C# Question

# 2 x 10 random generated numbers have the same sum c#

I have 2 listboxes that i need to put 10 random generated numbers in. Then i need to calculate the sum of listbox 1 and the sum of listbox 2 and compare them to see which one is bigger. I do get different numbers in each listbox but for some reason the sum of the listboxes is always the same. How do i make it that the sum is different per listbox.
this i my code at the moment.

`````` 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);
}

{
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;

}

}
{
int listbox1total = 0;

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

{
int listbox2total = 0;
int k = 0;

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

}
return listbox2total;
}
``````

You have a typo (an old story of copy + paste) in the code:

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

should be

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

i.e. `listbox2total` should be the sum of `listBox2.Items`.

In order to avoid such errors, change the design, do not copy yourself, extract methods:

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

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

.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)) {
...
}
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download