c#从数组中获取最小值

时间:2014-10-05 11:28:17

标签: c# arrays

我因为从数组中获取最小值而陷入困境。 每次运行时,最小值仍为零。 我知道索引必须减去一,但我不知道如何将其应用于代码。 抱歉我的英语不好,我希望你们能帮助我!

public partial class Form1 : Form
{
    int[] numbers = new int[99];
    int index = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    public int Som()
    {
        //if the numbers are <99 they will be add to index.
        int som = 0;
        for (int i = 0; i < 99; i++)
        {
            som = som + numbers[i];
        }
        return som;
    }
    public int Average()
    {
        // 
        int answersom = Som();
        int g = (answersom / index);
           return g;     
    }
    public int Max()
    {
        int Max = numbers[0];
        foreach (int number in numbers)
        {
            if (number > Max)
            {
                Max = number;
            }
        }
        return Max;
    }
    public int Min()
        {// array gets de value thats on 0
            int Min = numbers[0];
            foreach (int number in numbers)
            {// if the number is smaller then 0.
                if (number < Min)
                {// zero is the new number
                    Min = number;
                }

            }
            return Min;
        }
    private void button1_Click(object sender, EventArgs e)
    {
        //if textbox doesnt contain numbers
        if (textBox1.Text.All(chr => char.IsLetter(chr)))
        {
            //labeltext message 'please only fill in numbers'
            label1.Text = "Vul alleen Cijfers in";
        }
        //else
        else
        {
            //is putting the numbers on the right spot of the array
            numbers[index] = Convert.ToInt32(textBox1.Text);
            //index will add each time.
            index++;
            label4.Text = Convert.ToString(Som());

        }
        //
        int g = Convert.ToInt32(textBox1.Text);
        label5.Text = Convert.ToString(Average());
        {

            label6.Text = Convert.ToString(Min());

            label7.Text = Convert.ToString(Max());

        }
    }
}

}

3 个答案:

答案 0 :(得分:2)

您可以轻松使用Linq,

使用System.Linq;

int min = numbers.Min();

答案 1 :(得分:2)

问题在于,您始终使用所有数字计算最小值,其中包括您尚未使用按钮添加的所有数字的零。这就是为什么你的最小值总是立即返回0,除非你添加99个数字。您需要将Min功能更改为:

public int Min() {
    int min = numbers[0];

    for (int i = 0; i < index; i++) {
        int number = numbers[i];

        if (number < min) {
            min = number;
        }
    }

    return min;
}

正如您所看到的,该功能现在只使用您添加的数字(索引低于index)而不是所有数字来计算最小值numbers阵列。

答案 2 :(得分:0)

这里的问题是你的命名约定,你有一个。 Min 变量和 Min 方法