Java:在数组中查找最大值方法 1:方法 2:

2022-09-01 11:11:46

由于某种原因,当我尝试只打印一个值(即11.3)时,此代码为数组中的最大值打印三个值。有人可以向我解释为什么这样做吗?

谢谢。

import java.util.Scanner;

public class Slide24
{
    public static void main (String [] args)
    {
        Scanner in = new Scanner(System.in);

        double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
            8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
            3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};

        double total = 0, avgMax = 0;

        for (int counter = 0; counter < decMax.length; counter++)
        {
         total += decMax[counter];
        }

        avgMax = total / decMax.length;

        System.out.printf("%s %2.2f\n", "The average maximum temperature for December was: ", avgMax);

        //finds the highest value
        double max = decMax[0];

        for (int counter = 1; counter < decMax.length; counter++)
        {
         if (decMax[counter] > max)
         {
          max = decMax[counter];
          System.out.println("The highest maximum for the December is: " + max);
         }

        }        
    }
}

答案 1

每当它找到一个高于当前最大值的数字时,它就会打印出一个数字(在你的情况下,这恰好发生了三次)。将打印件移出 for 循环,您应该很好。

for (int counter = 1; counter < decMax.length; counter++)
{
     if (decMax[counter] > max)
     {
           max = decMax[counter];
     }
}

System.out.println("The highest maximum for the December is: " + max);

答案 2

要从数组中查找最高(最大)或最低(最小)值,这可以为您提供正确的方向。下面是从基元数组中获取最大值的示例代码。

方法 1:

public int maxValue(int array[]){
  List<Integer> list = new ArrayList<Integer>();
  for (int i = 0; i < array.length; i++) {
    list.add(array[i]);
  }
 return Collections.max(list);

}

要获取最低值,您可以使用

Collections.min(list)

方法 2:

public int maxValue(int array[]){
  int max = Arrays.stream(array).max().getAsInt();
  return max;
}

现在,以下行应该可以正常工作。

System.out.println("The highest maximum for the December is: " + maxValue(decMax));