簡體   English   中英

使用for循環在數組中查找最大值和最小值?

[英]Finding Maximum & Minimum in an array using for loops?

試圖在 java 中找到隨機生成的數組的最小值/最大值。 我的代碼正在尋找最大值,但是我不確定為什么當我嘗試運行它時,最小值每次都變成 0.0。

public static void main(String[] args) {
    double array1[] = new double [10];
    int n = array1.length;
    double max = array1[0];
    double min = array1[1];

    System.out.println("Array: ");

    for (int i=0; i<n; i++) {
        array1[i] = Math.floor((Math.random() * 100) + 1);
        System.out.print(array1[i]+ " | " );
        if (array1[i] > max) {
             max = array1[i];
        } 
        if (min > array1[i]) {
             min = array1[i];


            }

        }

 }

從我看到的,你得到0.0的最小值的原因,因為它是一個空數組內的元素的默認值,所以當你嘗試比較整個隨機生成的數組,其中最小值只有1,內部的值min變量永遠不會更新。 盡管數組中的元素尚未初始化,但您已將min指定為數組的第二個元素。 嘗試在比較循環之前處理的不同循環中初始化數組,或者將min變量指定為隨機生成器的最大值,然后它可以平滑運行。

for(int i= 0;i<n;i++)
   array1[i] = Math.floor((Math.random() * 100) + 1);
max = array[0];
min = array[0];
for(int i = 1;i<n;i++)
{
  System.out.print(array1[i]+ " | " );
  //continue ...
}

或這個

min = 100;
max = 1;
for(int i = 0; i<n;i++)
{
   //continue ...
}

在初始化max和min之前進行數組賦值; 或者如果你想避免那個額外的循環,只需將min初始化為Double.MAX_VALUE,因為將其賦值給0.0(雙數組中元素的默認初始值)將不滿足if條件 - 任何大於或等於的隨機數1總是大於0。

一種相當標准的方法是使用“最壞情況”值初始化最小/最大變量:

double max = Double.MIN_VALUE;
double min = Double.MAX_VALUE;

這也將解決您的問題,因為您不會生成低至0.0任何值,這是您在訪問它時將數值分配給minmax的數組。

此外,在您的循環中,您可以簡化為:

max = Math.max(max, array[i]);
min = Math.min(min, array[i]);
    // using forloop
// max number in arrry
    const arr = [2, 3, 5, 10, 8, 3];
    let max = 0;
    for (i = 0; i < arr.length; i++) {
      if (arr[i] > max) {
        max = arr[i];
      }
    }
    console.log(max);
    
    // max number in arrry
    let min = 100;
    for (i = 0; i < arr.length; i++) {
      if (arr[i] < min) {
        min = arr[i];
      }
    }
    console.log(min);
//find maximum  and min number in array using funtion

const maxArrayNum = (arr) => {
  let max = Math.max(...arr);
  return max;
};

const minArrayNum = (arr) => {
  let min = Math.min(...arr);
  return min;
};

const maxNum = maxArrayNum([3, 4, 2, 1]);
console.log(maxNum);
const minNum = minArrayNum([3, 4, 2, 1]);
console.log(minNum);

暫無
暫無

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

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