[英]max and min of array c#
所以,我将双值输入数组,然后创建总和(没有最大值和最小值)、平均值、最大值和最小值。 一切正常,但是min永远为0,我不知道该怎么办;
注意:不使用Max()
和Min()
方法
static void Main(string[] args)
{
double avr = 0;
double sum = 0;
double max;
double min;
Console.WriteLine("how many numbers?");
int b = Convert.ToInt32(Console.ReadLine());
double[] arr = new double[b];
max = arr[0];
min = arr[0];
for (int i = 0; i < b; i++)
{
arr[i] = Convert.ToDouble(Console.ReadLine());
if (arr[i] >= max)
{
max = arr[i];
}
else if (arr[i] <= min)
{
min = arr[i];
}
sum += arr[i];
}
sum = sum - max - min;
avr = sum / (b - 2);
Console.WriteLine("sum = {0},average = {1}, max = {2}, min = {3}", sum, avr, max, min);
Console.ReadKey();
}
您使用默认值double
来初始化min
和max
- 因此在任何迭代之前都将设置为 0。 因此,如果所有元素都大于零,则min
将无法正常工作, max
- 当所有元素都小于零时。
使固定
double.MinValue
/ double.MaxValue
对应的 min/max,因此if
条件max = double.MinValue;
任何实际值都将满足max = double.MinValue;
arr[0]
实际上将包含有效的用户提供的值而不是默认值。当您初始化 max 和 min 时,您将其设置为arr[0]
,这将是 0。这意味着您的 min 已准备好处于非常低的值。
做double.MinVale
和double.MaxValue
来初始化你的最大和最小变量。
此代码执行您尝试实现的目标。 我删除了数组,因为它没有功能。 有两个问题(另见代码中的注释):1) else if
语句:一个值可以同时是最小值和最大值,并且当输入的数字总是高于之前的数字时,永远不会达到 else . 2) 初始最小值应为可能的最大值。
static void Main(string[] args)
{
double avr = 0;
double sum = 0;
double max = 0;
double min = Double.MaxValue; // *** Initially set to maximum possible number ***
Console.WriteLine("How many numbers?");
int b = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < b; i++)
{
double number = Convert.ToDouble(Console.ReadLine());
if (number >= max)
{
max = number;
}
if (number <= min) // *** The else is removed here ***
{
min = number;
}
sum += number;
}
sum = sum - max - min; // Exclude lowest and hightest value
avr = sum / (b - 2); // Average excluding lowest and highest value
Console.WriteLine("sum = {0}, average = {1}, max = {2}, min = {3}", sum, avr, max, min);
Console.ReadKey();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.