簡體   English   中英

從數組中查找最小值和最大值,最小值始終為 0

[英]Find minimum and maximum number from array, minimum is always 0

程序首先詢問用戶要存儲在數組中的元素數量,然后詢問數字。

這是我的代碼

    static void Main(string[] args)
    {
        Console.Write("How many numbers do you want to store in array: ");
        int n = Convert.ToInt32(Console.ReadLine());
        int[] numbers = new int[n];
        int min = numbers[0];
        int max = numbers[0];

        for (int i = 0; i < n; i++)
        {
            Console.Write("Enter number {0}:  ", i+1);
            numbers[i] = Convert.ToInt32(Console.ReadLine());
        }

        for (int i = 0; i < n; i++)
        {
            if (min > numbers[i]) min = numbers[i];
            if (max < numbers[i]) max = numbers[i];
        }
        Console.WriteLine("The minimum is: {0}", min);
        Console.WriteLine("The maximum is: {0}", max);
        Console.ReadKey();
    }
  }
}

但最小值始終為 0,這是為什么呢?

除了您的問題,您還可以使用Enumerable.MinEnumerable.Max方法,例如;

int[] numbers = new int[]{1, 2, 3 ,4};
Console.WriteLine(numbers.Min()); //1
Console.WriteLine(numbers.Max()); //4

不要忘記添加System.Linq命名空間。

您的問題是填充數字之前minmax初始化為numbers[0] ,因此它們都設置為零。 這對於min (如果您的所有數字都是正數)和max (如果您的所有數字都是負數)都是錯誤的。

如果你移動方塊

int min = numbers[0];
int max = numbers[0];

for (int i = 0; i < n; i++)
{
    Console.Write("Enter number {0}:  ", i+1);
    numbers[i] = Convert.ToInt32(Console.ReadLine());
}

然后minmax都將被初始化為第一個輸入數字,這很好。 實際上,您可以將for循環限制for僅檢查后續數字:

for (int i = 1; i < n; i++)
    ....

只要確保用戶的n值大於零即可!

您正在將min初始化為 0。

嘗試以下

int min = Int32.MaxValue;

此外,如果您接受負值作為輸入,則應將 max 初始化為最小整數值。

int max = Int32.MinValue;

此代碼將以非常簡單的方式幫助您,而無需添加任何循環和條件

int[] arr={1,1,2,4,5,1,2,1};
Array.Sort(arr);
Console.WriteLine("Min no: "+arr[0]);
Console.WriteLine("Max no: "+arr[arr.Length-1]);
        for (int i = 0; i < vector.GetLength(0); i++)
        {
            if (i == 0)
            {
                VectorMinMax[1]= vector[i];
                VectorMinMax[0]= vector[i];
            }
            else {
                if (VectorMinMax[1] > vector[i]) VectorMinMax[1] = vector[i];
                if (VectorMinMax[0] < vector[i]) VectorMinMax[0] = vector[i];
            }

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM