设置c#显示前数组的最大和

本文关键字:数组 显示 设置 | 更新日期: 2023-09-27 17:52:15

所以我是c#的新手,我正在编写一个基本的程序,它将随机值分配给6个数组。

    private void button1_Click(object sender, EventArgs e)
    {
        tbxA.Clear();
        tbxB.Clear();
        int[] number = new int[6];
        Random m = new Random();
        for (int i = 0; i < 6; i++)
        {
            number[i] = m.Next(0, 4);
            tbxA.AppendText("" + Convert.ToString(number[i]) + "'n");
        }
        int sum = number.Sum();
        if (sum > 8)
        {
            tbxB.AppendText(" " + sum);
        }
    }

这将在文本框A中显示随机生成的数组1-6,如果它们的总和超过8,它将在文本框b中显示总和。

然而,我想在这里做的是使数组中的数字仅在它们的总和大于8时显示在文本框A中。如果它们的总和小于8,则应该自动为数组生成新数字,直到它符合要求的总和> 8。

我尝试使用另一个for循环,其中包含所有内容以及if,但它会导致程序崩溃。

设置c#显示前数组的最大和

试试这个…但请记住,由于使用的是随机数可能需要一段时间才能满足条件并且可能看起来像无限循环

private void button1_Click(object sender, EventArgs e)
    {
        tbxA.Clear();
        tbxB.Clear();
        int[] number = new int[6];
        Random m = new Random();
        while(true)
        {
            for (int i = 0; i < 6; i++)
            {
                number[i] = m.Next(0, 4);
                tbxA.AppendText(number[i].ToString() + Environment.NewLine);
                //tbxA.AppendText("" + Convert.ToString(number[i]) + "'n");
            }
            int sum = number.Sum();
            if (sum > 8)
            {
                tbxB.AppendText(" " + sum);
                break;
            }
            else{
                tbxA.Clear();
                tbxB.Clear()
            }
        }
    }

或者如果你想要额外的数字,但不替换已经添加的旧数字。

private void button1_Click(object sender, EventArgs e)
    {   
        tbxA.Clear();
        tbxB.Clear();
        //int[] number = new int[6];
        List<string> number = new List<string>();
        Random m = new Random();
        while(true)
        {
            for (int i = 0; i < 6; i++)
            {
                number.Add(m.Next(0, 4));
            }
            int sum = number.Sum();
            if (sum > 8)
            {
                tbxA.AppendText(string.Join("Environment.NewLine", number.ToArray()))
                tbxB.AppendText(" " + sum);
                break;
            }
        }
    }

听起来你在寻找一个while循环。继续循环,直到和大于8。

        int i = 0;
        while (number.Sum() < 8 && number.Length > i)
        {
            number[i++] = m.Next(0, 4);
            tbxA.AppendText("" + Convert.ToString(number[i]) + "'n");
        }

编辑:您还需要考虑向数组添加更多值。您可能遇到错误的原因是因为您正在创建一个包含6个元素的数组。你需要创建一个动态数组,在你的数组中分配更多的空间,或者使用像List这样的东西,你可以不断地添加更多的值。

Edit2:编辑循环。记住,如果你创建了一个包含6个元素的数组你不能再添加其他元素了。所以你需要创建一个更大的数组:

int[] number = new int[10];

或者类似的东西。上面的解决方案假设您的数组足够大,可以继续添加值。