尝试获取数组中的最小值时,结果为0.00

时间:2017-11-23 21:39:28

标签: java arrays

在eclipse中,当我运行此代码时,minTemp结果总是0.00,尽管maxTemp和平均结果都很好。似乎没有解决它。有什么建议?

package exercises;

public class PracticalAnswer2 {
   public static void main(String[] args) {
      double[] temps;
      temps = new double[7];
      double total = 0.0;
      double maxTemp = 0.0;
      double minTemp = 0.0;

      temps[0]= 3.4;
      temps[1]= 4.2;
      temps[2]= 9.0;
      temps[3]= 2.2;
      temps[4]= 4.5;
      temps[5]= 6.4;
      temps[6]= 3.1;

      for(int loop = 0; loop<temps.length;loop++) {
         total+=temps[loop];

         if(temps[loop]<minTemp) {
            minTemp = temps[loop];
         }

         if(temps[loop]>maxTemp) {
            maxTemp = temps[loop];
         }

      }

      System.out.printf(" average temperature : %.2f \n",(total/temps.length) );
      System.out.printf("minimum temerature : %.2f \n", minTemp);
      System.out.printf("maximum temperature: %.2f \n", maxTemp);
   }
}

3 个答案:

答案 0 :(得分:0)

是的,因为temps [loop]永远不会低于0.尝试为mintemp设置一些高点。类似于Double.MAX_VALUE

答案 1 :(得分:0)

  if(temps[loop] < minTemp) {  // minTemp initialized with 0.0
        minTemp = temps[loop];
  }

  temps[0]= 3.4;
  temps[1]= 4.2;
  temps[2]= 9.0;
  temps[3]= 2.2;
  temps[4]= 4.5;
  temps[5]= 6.4;
  temps[6]= 3.1;

数组临时值中没有值小于0.0,您的代码执行它打算执行的操作。 通常,当我们使用minXXX或maxXXX时,我们使用非常大的数字初始化minXXX,使用较小的数字初始化maxXXX。迭代迭代时,它会比较这些值并分配所需的最小/最大值

答案 2 :(得分:0)

您使用0.0初始化minTempmaxTemp。使用您编写的循环,您将永远无法更改这些值,因为temps[]中的任何值都小于0.0。我认为在第一个循环中,您应该将temps[0]分配给minTempmaxTemp,然后在下一个循环中检查来自temps[]的下一个值是否低于{{ 1}}并高于minTemp。如果发生这种情况,则应将此新值分配给maxTempminTemp。顺便说一下maxTemp在您的项目中看起来没问题。

使maxTemp值循环按预期工作的另一种可能性是使用minTemp而不是0.0来初始化它。