找到没有数组的java中两个双精度数之间的最大差异

时间:2013-04-09 10:02:20

标签: java

我们要找到连续输入值之间的差异并返回最大的变化。 我的主要问题是找到正确的运算符(我认为)。我也想让它与负值一起工作..

if(count > 0){
      change = Math.abs(temp) - Math.abs(temp2);
      UI.println(change);
      if(Math.abs(change) > Math.abs(bigChange)){
           bigChange = Math.abs(change);
      }
}

3 个答案:

答案 0 :(得分:1)

你对abs的使用是不正确的。考虑temp为-1且temp2为1的情况。这些值之间的差异为2,但您的例程将计算为0。

尝试:

if(count > 0) {
  change = Math.abs(temp - temp2);
  UI.println(change);
  if( change > bigChange ) {
    bigChange = change;
  }
}

答案 1 :(得分:0)

如果你想找到你应该使用的数字之间的变化

change = Math.abs(temp- temp2);

而不是

 change = Math.abs(temp) - Math.abs(temp2);

此外,您应该初始化变量

bigChange=0 

此外,由于变量更改且bigChange始终大于零,因此可以避免再次调用Math.abs方法。

if(change > bigChange)
      {
          bigChange = change;
      }

也是正确的。

答案 2 :(得分:0)

应该相当简单:

int diff = temp - temp2;
max = Math.max(maxDifference, Math.abs(diff));
println(max).

你还有其他要求吗? Math.max和Math.min非常优化,并且与您自己进行比较一样快。这是一个单行。请参阅此答案以及Math.max vs(a> b?a:b)

Is Math.max(a,b) or (a>b)?a:b faster in Java?