[英]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.Min
和Enumerable.Max
方法,例如;
int[] numbers = new int[]{1, 2, 3 ,4};
Console.WriteLine(numbers.Min()); //1
Console.WriteLine(numbers.Max()); //4
不要忘記添加System.Linq
命名空間。
您的問題是在填充數字之前將min
和max
初始化為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());
}
然后min
和max
都將被初始化為第一個輸入數字,這很好。 實際上,您可以將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.