【问题标题】:Finding Maximum & Minimum in an array using for loops?使用for循环在数组中查找最大值和最小值?
【发布时间】:2019-09-18 15:08:20
【问题描述】:

试图在 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];


            }

        }

 }

【问题讨论】:

  • 嗯,你正在生成正数,所以这并不奇怪

标签: java arrays for-loop max min


【解决方案1】:

据我所知,最小值为 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 ...
}

【讨论】:

  • 你可能需要min = array[0];,然后你可以从i = 1开始循环
  • 我什至没有想过我是如何在一个空数组中设置值的。感谢您的帮助!
【解决方案2】:

在初始化 max 和 min 之前进行数组赋值;或者如果你想避免那个额外的循环,只需将 min 初始化为 Double.MAX_VALUE 因为将它分配给 0.0 (双精度数组中元素的默认初始值)将不满足 if 条件 - 任何大于或等于的随机数1 总是大于 0。

【讨论】:

    【解决方案3】:

    一种相当标准的方法是使用“最坏情况”值初始化最小/最大变量:

    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]);
    

    【讨论】:

      【解决方案4】:
          // 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);
      

      【讨论】:

        【解决方案5】:
        //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);
        

        【讨论】:

          猜你喜欢
          • 2018-09-21
          • 1970-01-01
          • 2021-06-17
          • 1970-01-01
          • 2013-10-05
          • 1970-01-01
          • 1970-01-01
          • 2019-05-15
          • 1970-01-01
          相关资源
          最近更新 更多