我是c#和编程的初学者。所以我现在正在学校研究这个代码,我必须在1-21之间生成21个随机数(你可以有数字的重复)。我已经做了代码,它正在工作排序...它在listbox1中生成数字,但它与我在listbox3中排序的数字不同。private void button1_Click(object sender, EventArgs e) { int[] a = new int[21]; Random tal = new Random(); for (int x = 1; x < a.Length; x++) { a[x] = tal.Next(1, 21); } for (int x = 1; x < a.Length; x++) { listBox1.Items.Add(a[x]); } foreach (int i in a) { Array.Sort(a); listBox3.Items.Add(a[i]); } int min = a[1]; for (int x = 1; x < a.Length; x++) if (a[x] < min) min = a[x]; listBox2.Items.Add(min); int max = a[20]; for (int x = 1; x > a.Length; x++) if (a[x] < max) max = a[x]; listBox2.Items.Add(max); } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button3_Click(object sender, EventArgs e) { int[] a = new int[21]; Random tal = new Random(); a.Clone(); foreach (int i in a) { Array.Sort(a); listBox3.Items.Add(a[i]); } } }}
2 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
1.数组以索引 0 开头,因此请将所有循环更改为从 0 开始:
for (int x = 0; x < a.Length; x++)
而不是
for (int x = 1; x < a.Length; x++)
也不是int min = a[0];int min = a[1];
2.在for循环之外对数组进行排序,无需一遍又一遍地进行:
Array.Sort(a);
foreach (int i in a)
{
listBox3.Items.Add(a[i]);
}
项目必须相同(但顺序不同)。
而且您正在克隆()并且实际上没有将其分配给任何东西,因此它是一个额外的代码。a.Clone();
陪伴而非守候
TA贡献1757条经验 获得超8个赞
变量有范围。
这对您现在来说意味着 in 与 in 不同(更不用说它们被分配到不同的数组)。a
button1_Click
a
button3_Click
如果需要共享它们,则应在类级别声明(即,不在方法中)。然后,这两种方法都可以使用相同的变量(只是不要重新分配它!a
也:
a.Clone();
不执行任何操作,除非您分配结果在循环中呼叫是完全过分的
Sort
Random tal = new Random()
甚至不用于button3_click
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消