[英]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
任何值,這是您在訪問它時將數值分配給min
和max
的數組。
此外,在您的循環中,您可以簡化為:
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.