【问题标题】:Java, ErroMax and Min of Array object data?Array对象数据的Java,ErroMax和Min?
【发布时间】:2013-12-02 08:14:05
【问题描述】:

我需要一些关于最大值和最小值的帮助。此代码部分来自我的年度燃料使用类的主要方法。该计划根据我的汽车至少加满三次油来预测我的年度燃料使用量。

我正在计算距离(即行驶里程)、MPG 和每加仑价格的最大值和最小值。从我的打印语句(不包括在内)中,我可以看到它正在正确计算最大值,但不是最小值,因为它打印了我将变量初始化为的零,而不是真正的最小值。

一些代码

//initialization of array of objects
   AnnualFuelUse[] fillUps = {new AnnualFuelUse (1, 1, 6500, 6800, 9.70, 3.11),
                              new AnnualFuelUse (2, 10, 6800, 7052, 8.10, 3.08),
                              new AnnualFuelUse (3, 20, 7052, 7349, 9.20, 3.15)};  

更多代码

//calculate Min and Max for distance, MPG, and price per gallon
   double minDist = 0, maxDist = 0;
   double minMPG = 0.0, maxMPG = 0.0, minPrice = 0.0, maxPrice = 0.0;

   Double dMin = Double.MAX_VALUE;
   Double dMax = Double.MIN_VALUE;
   Double mpgMin = Double.MAX_VALUE;
   Double mpgMax = Double.MIN_VALUE;
   Double priceMin = Double.MAX_VALUE;
   Double priceMax = Double.MIN_VALUE;

   for (int i = 0; i < fillUps.length; i++) {
       if (fillUps[i].getDist() > dMin){
            dMin = fillUps[i].getDist();
            minDist = dMin;
       }     
       if (fillUps[i].getDist() > dMax) {
            dMax = fillUps[i].getDist();
            maxDist = dMax;
       }
       if (fillUps[i].getMilesPerGallon() > mpgMin) {
            mpgMin = fillUps[i].getMilesPerGallon();
            minMPG = mpgMin;
       }    
       if (fillUps[i].getMilesPerGallon() > mpgMax) {
            mpgMax = fillUps[i].getMilesPerGallon();
            maxMPG = mpgMax;
       }             
       if (fillUps[i].getPrice() > priceMin) {
            priceMin = fillUps[i].getPrice();
            minPrice = priceMin;
       }          
       if (fillUps[i].getPrice() > priceMax) {
            priceMax = fillUps[i].getPrice();
            maxPrice = priceMax;
       }
    }

它为我提供了距离、MPG 和 pricePerGallon 的以下数据

最小值:0、0.0、0.00 最大值:300、2.3、3.15

非常感谢任何帮助! :)

【问题讨论】:

  • 一旦你解决了这个问题,我建议你在 [codereview] 上发布你的代码,因为你的代码中有几处可以改进。 (只需要求“一般性评论”)
  • @SimonAndréForsberg 是这个网站吗? codereview.stackexchange.com
  • 是的,对不起,我应该写 [codereview.se] 而不仅仅是 [codereview] :)
  • @SimonAndréForsberg 好的,我会这样做!再次感谢:)

标签: java arrays oop max min


【解决方案1】:

比较这些 if 条件:

   if (fillUps[i].getDist() > dMin){
        dMin = fillUps[i].getDist();
        minDist = dMin;
   }     
   if (fillUps[i].getDist() > dMax) {
        dMax = fillUps[i].getDist();
        maxDist = dMax;
   }

你最初的意思是if (fillUps[i].getDist() &lt; dMin)

&gt;&lt; 之间有很大的区别 :)

你总是在比较“is value more than”而不是“is value 小于

【讨论】:

  • 天哪,我比较错误的方式!非常感谢,您的解释很有帮助!
  • @ReneaS。没问题,实际上我花了一段时间才找到您的错误:P 我建议您将代码发布到 Code Review,因为其中有几处可以改进/简化。
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多