当前位置:  开发笔记 > 编程语言 > 正文

使负数正面

如何解决《使负数正面》经验,为你挑选了10个好方法。

我有一个Java方法,我在其中总结一组数字.但是,我希望任何负面数字都被视为正数.所以(1)+(2)+(1)+( - 1)应该等于5.

我确信有这么简单的方法 - 我只是不知道如何.



1> Jon Skeet..:

只需调用Math.abs.例如:

int x = Math.abs(-5);

这将设置x5.


注意边缘情况,例如Math.abs(Integer.MIN_VALUE)= Integer.MIN_VALUE.

2> Paul Tomblin..:

您描述的概念称为"绝对值",Java有一个名为Math.abs的函数可以为您完成.或者您可以避免函数调用并自己执行:

number = (number < 0 ? -number : number);

要么

if (number < 0)
    number = -number;


哦,困境时间 - 有很多同样好的答案,我不妨删除我的.但是之后我会失去40分,如果我这样做的话,我永远不会抓住Jon Skeet.
@cletus,您是否注意到我已经提到了标准库调用?或者在这种情况下,"重新发明"需要更少的调用库的指令?
抱歉-1重新发起标准库调用.

3> Hexagon Theo..:

你正在寻找绝对的价值,伙计.Math.abs(-5)返回5 ...



4> jpalecek..:

使用abs功能:

int sum=0;
for(Integer i : container)
  sum+=Math.abs(i);



5> AZ_..:

此代码也可以安全地在正数上调用.

int x = -20
int y = x + (2*(-1*x));
// Therefore y = -20 + (40) = 20


这么优雅的数学!

6> Uri..:

你在问绝对价值吗?

Math.abs(...)是你可能想要的功能.



7> Henrik Paul..:

您想要将每个数字换行Math.abs().例如

System.out.println(Math.abs(-1));

打印出"1".

如果要避免编写Math.-part,可以静态包含Math util.写吧

import static java.lang.Math.abs;

以及你的导入,你可以abs()通过写作来参考-function

System.out.println(abs(-1));



8> Shreshth Kha..:

试试这个(x前面的负数是有效的,因为它是一元运算符,在这里找到更多):

int answer = -x;

通过这种方式,您可以将正面变为负面,将负面变为正面.


但是,如果您只想将负数设为正数,请尝试以下方法:

int answer = Math.abs(x);

或者,如果您因某些原因不想使用abs()方法,那么试试这个:

int answer = Math.sqrt(Math.pow(x, 2));

希望能帮助到你!祝好运!



9> Eddie..:

最简单,最简单的方法是在Math.abs()调用中包装每个数字,所以你要添加:

Math.abs(1) + Math.abs(2) + Math.abs(1) + Math.abs(-1)

逻辑更改以反映代码的结构.也许是详细,但它可以做你想要的.


使用静态导入可以减少冗长.

10> XenoRo..:

当您需要表示没有丢失或缺失(负值)概念的值时,称为"绝对值".


获得绝对值的逻辑非常简单:"If it's positive, maintain it. If it's negative, negate it".


这意味着您的逻辑和代码应如下所示:

//If value is negative...
if ( value < 0 ) {
  //...negate it (make it a negative negative-value, thus a positive value).
  value = negate(value);
}

有两种方法可以否定一个值:

    好吧,否定它的价值: value = (-value);

    将它乘以"100%负数"或"-1": value = value * (-1);

两者实际上都是同一枚硬币的两面.只是你通常不记得那value = (-value);是实际的value = 1 * (-value);.


好吧,关于你如何在Java中实际执行它,它非常简单,因为Java已经为此提供了一个函数,在Math class:value = Math.abs(value);

是的,没有Math.abs()它只是一行代码与非常简单的数学,但为什么让你的代码看起来很难看?只需使用Java提供的Math.abs()功能!他们提供它是有原因的!

如果你绝对需要跳过这个函数,你可以使用value = (value < 0) ? (-value) : value;,这只是我在逻辑(第三)部分提到的代码的一个更紧凑的版本,使用Ternary运算符(? :).


此外,在某些情况下,您可能希望始终在可能同时接收正值和负值的函数中表示丢失或缺失.

您可以简单地获取绝对值,并取消它,而不是进行一些复杂的检查: negativeValue = (-Math.abs(value));


考虑到这一点,并考虑一个具有多个数字之和的案例,例如你的,实现一个函数是个不错的主意:

int getSumOfAllAbsolutes(int[] values){
  int total = 0;
  for(int i=0; i


根据您可能需要再次使用相关代码的可能性,最好将它们添加到您自己的"utils"库中,首先将这些函数拆分为其核心组件,并将最终函数简单地保存为一组调用核心组件的现在拆分功能:

int[] makeAllAbsolute(int[] values){
  //@TIP: You can also make a reference-based version of this function, so that allocating 'absolutes[]' is not needed, thus optimizing.
  int[] absolutes = values.clone();
  for(int i=0; i

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有