Tra*_*ray 138 java negative-number
我有一个Java方法,我在其中总结一组数字.但是,我希望任何负面数字都被视为正数.所以(1)+(2)+(1)+( - 1)应该等于5.
我确信有这么简单的方法 - 我只是不知道如何.
Jon*_*eet 347
只需调用Math.abs.例如:
int x = Math.abs(-5);
Run Code Online (Sandbox Code Playgroud)
这将设置x为5.
Pau*_*lin 102
您描述的概念称为"绝对值",Java有一个名为Math.abs的函数可以为您完成.或者您可以避免函数调用并自己执行:
number = (number < 0 ? -number : number);
Run Code Online (Sandbox Code Playgroud)
要么
if (number < 0)
number = -number;
Run Code Online (Sandbox Code Playgroud)
jpa*_*cek 12
使用abs功能:
int sum=0;
for(Integer i : container)
sum+=Math.abs(i);
Run Code Online (Sandbox Code Playgroud)
此代码也可以安全地在正数上调用.
int x = -20
int y = x + (2*(-1*x));
// Therefore y = -20 + (40) = 20
Run Code Online (Sandbox Code Playgroud)
您想要将每个数字换行Math.abs().例如
System.out.println(Math.abs(-1));
Run Code Online (Sandbox Code Playgroud)
打印出"1".
如果要避免编写Math.-part,可以静态包含Math util.写吧
import static java.lang.Math.abs;
Run Code Online (Sandbox Code Playgroud)
以及你的导入,你可以abs()通过写作来参考-function
System.out.println(abs(-1));
Run Code Online (Sandbox Code Playgroud)
试试这个(x前面的负数是有效的,因为它是一元运算符,在这里找到更多):
int answer = -x;
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以将正面变为负面,将负面变为正面.
但是,如果您只想将负数设为正数,请尝试以下方法:
int answer = Math.abs(x);
Run Code Online (Sandbox Code Playgroud)
或者,如果您因某些原因不想使用abs()方法,那么试试这个:
int answer = Math.sqrt(Math.pow(x, 2));
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!祝好运!
最简单,最简单的方法是在Math.abs()调用中包装每个数字,所以你要添加:
Math.abs(1) + Math.abs(2) + Math.abs(1) + Math.abs(-1)
Run Code Online (Sandbox Code Playgroud)
逻辑更改以反映代码的结构.也许是详细,但它可以做你想要的.
当您需要表示没有丢失或缺失(负值)概念的值时,称为"绝对值".
获得绝对值的逻辑非常简单:"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);
}
Run Code Online (Sandbox Code Playgroud)
有两种方法可以否定一个值:
value = (-value);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<values.lenght; i++){
total += Math.abs(values[i]);
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
根据您可能需要再次使用相关代码的可能性,最好将它们添加到您自己的"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<values.lenght; i++){
absolutes[i] = Math.abs(values[i]);
}
return absolutes;
}
int getSumOfAllValues(int[] values){
int total = 0;
for(int i=0; i<values.lenght; i++){
total += values[i];
}
return total;
}
int getSumOfAllAbsolutes(int[] values){
return getSumOfAllValues(makeAllAbsolute(values));
}
Run Code Online (Sandbox Code Playgroud)