c#从数组中获取最小值

c#从数组中获取最小值,c#,arrays,C#,Arrays,我无法从数组中获取最小值。 每次我运行它时,最小值仍然是零。 我知道索引必须为负1,但我不知道如何将其应用于代码。 对不起,我的英语很差,我希望你们能帮助我 public partial class Form1 : Form { int[] numbers = new int[99]; int index = 0; public Form1() { InitializeComponent(); } private void Fo

我无法从数组中获取最小值。 每次我运行它时,最小值仍然是零。 我知道索引必须为负1,但我不知道如何将其应用于代码。 对不起,我的英语很差,我希望你们能帮助我

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());

        }
    }
}
公共部分类表单1:表单
{
整数[]个数=新整数[99];
int指数=0;
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
}
公共int Som()
{
//如果数字为最大值)
{
最大值=数量;
}
}
返回最大值;
}
公共int Min()
{//数组获取0上的de值
int Min=数字[0];
foreach(整数中的整数)
{//如果该数字小于0。
如果(数量<分钟)
{//0是新的数字
最小=数量;
}
}
返回最小值;
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
//如果文本框不包含数字
if(textBox1.Text.All(chr=>char.isleter(chr)))
{
//labeltext消息“请仅填写数字”
label1.Text=“Vul alleen Cijfers in”;
}
//否则
其他的
{
//将数字放在数组的正确位置
数字[索引]=转换为32(textBox1.Text);
//每次都会添加索引。
索引++;
label4.Text=Convert.ToString(Som());
}
//
int g=转换为32(textBox1.Text);
label5.Text=Convert.ToString(Average());
{
label6.Text=Convert.ToString(Min());
label7.Text=Convert.ToString(Max());
}
}
}

}

您可以轻松使用Linq

使用System.Linq

int min = numbers.Min();

问题是,您总是计算所有数字的最小值,其中包括所有尚未使用按钮添加的数字的零。这就是为什么你的最小值现在总是返回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;
}
public int Min(){
int min=数字[0];
对于(int i=0;i

如您所见,该函数现在将仅使用您添加的数字(索引位于
index
)计算最小值,而不是
数字数组中的所有数字。

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

为什么否决?既然核心框架中已经有了一些东西,为什么要重新设计自己的呢?@Caramiriel,因为这并不能解决OP的问题。此外,在CS练习中,他可能需要自己实现这些函数。虽然我认为在这种情况下使用
List
.Min()
会更容易。这只是对已经存在的事物的再创造。@Caramiriel我同意你的观点,但答案应该包括这一改变。@Caramiriel OP刚刚声明他的任务需要使用数组。非常感谢!终于成功了,我很高兴