将数组从button1复制到button2

时间:2019-02-01 20:51:23

标签: c#

我是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 个答案:

答案 0 :(得分:1)

1.Array以索引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();)却实际上没有将其分配给任何东西,因此它是一个额外的代码。

答案 1 :(得分:0)

变量具有作用域

这对您当前意味着,a中的button1_Clicka中的button3_Click不同(更不用说将它们分配给不同的数组)。

如果需要共享它们,则a应该在类级别上声明(即,不在方法中)。然后这两种方法都可以使用相同的变量(只是不要重新分配它!)。

也:

  • a.Clone();不会执行任何操作,除非您分配结果
  • 在循环中调用Sort完全是过分的
  • Random tal = new Random()甚至不在button3_click中使用