我的程序应该生成24个随机数,然后将它们全部加在一起并显示它们。
我已经让他们做了所有事情,除了我不能得到前24个数字 我尝试移动收集数字但不起作用的声明 我不知道如何前进。
int x = 0;
int number = 0;
int i = 0;
while (i < listBox1.Items.Count)
{
number += Convert.ToInt32(listBox1.Items[i++]);
}
totaltextBox.Text = Convert.ToString(number);
Random ran = new Random();
for(x = 0;x <= 23; x++)
{
listBox1.Items.Add(Convert.ToString(ran.Next(0,100)));
}
fileNumbers.Text = listBox1.Items.Count.ToString();
答案 0 :(得分:1)
如评论中所述,您过早地设置了totaltextbox文本。这样,当您尝试累积值时,列表框为空。
试试这个:
Random ran = new Random();
for (var x = 0; x <= 23; x++)
{
listBox1.Items.Add(Convert.ToString(ran.Next(0, 100)));
}
var number = listBox1.Items.Cast<string>().Select(Int32.Parse).Sum();
var count = listBox1.Items.Count;
我还用LINQ-Expression替换了你的while循环。另请注意,在c#中,您可以声明for
- 我的示例代码中的变量。无需为整个方法声明它们(除非你想在for循环之后因任何原因使用它们)。
答案 1 :(得分:1)
只需替换for
和while
循环即可。如果没有,则不能listBox1.Items.Count
。
int x = 0;
int number = 0;
int i = 0;
Random ran = new Random();
for (x = 0; x <= 23; x++)
{
listBox1.Items.Add(Convert.ToString(ran.Next(0, 100)));
}
while (i < listBox1.Items.Count)
{
number += Convert.ToInt32(listBox1.Items[i++]);
}
totaltextBox.Text = Convert.ToString(number);
fileNumbers.Text = listBox1.Items.Count.ToString();
答案 2 :(得分:0)
其他答案都是正确的。但是我会添加我的解决方案,避免一些来回转换并减少迭代次数:
Random ran = new Random();
int total = 0;
for (int x = 0; x <= 23; x++)
{
int rn = ran.Next(0, 100);
total += rn;
listBox1.Items.Add(rn.ToString());
}
totaltextBox.Text = total.ToString();