我正在尝试生成6个随机数并将它们存储在列表中,然后在另一个列表中显示这些列表项 到目前为止我有
Random random_generator = new Random(DateTime.Now.Millisecond);
int random_numbers;
List<int> lst_numbers = new List<int>();
lst_display.Items.Clear();
while (lst_numbers.Count < 6)
{
random_numbers = random_generator.Next(1,45);
if (!lst_numbers.Contains(random_numbers))
{
lst_numbers.Add(random_numbers);
}
else
{
}
lst_display.Items.Add(lst_numbers);
虽然它完成了(收藏)而不是存储的实际数字
以下是最终的工作代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_start_Click(object sender, EventArgs e)
{
Random random_generator = new Random(DateTime.Now.Millisecond);
int random_numbers;
List<int> lst_numbers = new List<int>();
lst_display.Items.Clear();
while (lst_numbers.Count < 6)
{
random_numbers = random_generator.Next(1, 45);
if (!lst_numbers.Contains(random_numbers))
{
lst_numbers.Add(random_numbers);
}
else
{
}
}
lst_display.Items.Add(string.Join(",", lst_numbers));
}
}
}
答案 0 :(得分:0)
以下代码是否解决了您的问题?请告诉我。感谢。
Random random_generator = new Random(DateTime.Now.Millisecond);
int random_numbers;
List<int> lst_numbers = new List<int>();
List<int> lst_display = new List<int>();
while (lst_numbers.Count < 6)
{
random_numbers = random_generator.Next(1, 45);
if (!lst_numbers.Contains(random_numbers))
{
lst_numbers.Add(random_numbers);
}
};
lst_display.AddRange(lst_numbers);
答案 1 :(得分:0)
你while
循环中的这一行(你错过了一个结束大括号)是罪魁祸首:
lst_display.Items.Add(lst_numbers);
您将整个集合添加到lst_display.Items
,并且每次迭代都会执行一次。
将该行代码保留在循环中,但只添加当前随机生成的数字:
lst_display.Items.Add(random_numbers);
或者将它移到循环之外,并在while
循环完成后添加一次集合。 Items
属性是ObjectCollection
,因此如果你走这条路线,你需要转换为一个对象数组:
while (...)
{
...
}
lst_display.Items.AddRange(lst_numbers.Cast<object>().ToArray());
除非您稍后使用List<int>
,否则您可以删除该代码,并使用我的第一个示例将随机生成的数字直接添加到lst_display.Items
。
在看到您的评论后更新:
“我必须列出6个项目,然后在新列表中的一行显示它们”
如果你想在ListBox中的一行上显示它们,那么有一个名为String.Join
的方法可以收集一个集合并将其展平。
所以在你的while循环完成后,你可以这样称呼:
lst_display.Items.Add(string.Join(",", lst_numbers));