我因为从数组中获取最小值而陷入困境。 每次运行时,最小值仍为零。 我知道索引必须减去一,但我不知道如何将其应用于代码。 抱歉我的英语不好,我希望你们能帮助我!
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());
}
}
}
}
答案 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 方法