繁体   English   中英

数组 c# 的最大值和最小值

[英]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来初始化minmax - 因此在任何迭代之前都将设置为 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.MinValedouble.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM