【问题标题】:How to find the lowest value in an array generated from the random class?如何在随机类生成的数组中找到最小值?
【发布时间】:2022-01-05 07:55:09
【问题描述】:

我们必须通过一种方法传递数组,该方法采用最高、最低和平均值,然后打印它们。

我在获取分配给 minNum 的最低值时遇到问题。

谢谢!

public static void averageMaxMinMethod(double[] arrayOfDoubles){
   
      double maxNum = 0;
      double minNum = 0;
   
      for(int i = 0; i < arrayOfDoubles.length; i++){
      
         if(arrayOfDoubles[i] > maxNum)
            maxNum = arrayOfDoubles[i];
         if(arrayOfDoubles[i] < minNum)// <=== My poor attempt of getting the lowest value
            minNum = arrayOfDoubles[i];
      }
    System.out.println("Highest given double is: " + maxNum);
    System.out.println("Lowest given double is: " + minNum);
   }
   
   public static void main(String[] args) {   
   //1-3: Set up Scanner object to collect user's input on the size of array.
      Scanner keyboard = new Scanner(System.in);
      System.out.println("How many double numerical entries do you have?");
   //4: Declare an array of size sizeOfArray
      int sizeOfArray = keyboard.nextInt();  
   
      //Initialize array
      double[] arrayOfDoubles;
      arrayOfDoubles = new double[sizeOfArray];   
      
      
      
   
      for(int i = 0; i < sizeOfArray; i++){
      //5: Use the Random number Class and walk over the array 
         Random randomNum = new Random();       
         arrayOfDoubles[i] = randomNum.nextDouble(0.0 , 100.0); 
      }
      //6: Invoke SumMethod
      sumMethod(arrayOfDoubles);
      averageMaxMinMethod(arrayOfDoubles);
      
      
   }

【问题讨论】:

  • 将最大值和最小值初始化为第一个数组元素,而不是零。

标签: java arrays for-loop minimum


【解决方案1】:
  double maxNum = 0;
  double minNum = 0;

这仅适用于最大值至少为零且最小值至多为零的情况 - 否则,这些值不会更新。

改为使用数组中的第一个元素,该元素至少与最小值一样大,并且至少与最大值一样小。

  double maxNum = arrayOfDoubles[0];
  double minNum = arrayOfDoubles[0];

当然,你不需要在第一次循环迭代时比较这些,所以你可以从 1 开始循环索引:

for(int i = 1; i < arrayOfDoubles.length; i++){

【讨论】:

    【解决方案2】:

    其他人指出了您在当前实施中所犯的错误,但是您也忘记了计算平均值。您实际上不必编写代码来执行此操作,Java 包括DoubleSummaryStatistics,它可以为您提供maxminaverage。喜欢,

    public static void averageMaxMinMethod(double[] arrayOfDoubles) {
        DoubleSummaryStatistics dss = DoubleStream.of(arrayOfDoubles).summaryStatistics();
        System.out.println("Highest given double is: " + dss.getMax());
        System.out.println("Lowest given double is: " + dss.getMin());
        System.out.println("Average is: " + dss.getAverage());
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2016-06-02
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      相关资源
      最近更新 更多