我正在尝试生成存储的随机数,我需要返回字符串值.
这是我的方法:
public String generateRand() {
java.util.Random rand = new java.util.Random(System.currentTimeMillis());
String rnd = "" + Math.abs(rand.nextInt()) + "" +
Math.abs(System.currentTimeMillis());
return rnd;
}
Run Code Online (Sandbox Code Playgroud)
Jenkins的Findbugs插件警告我有Bad attempt to compute absolute value of signed random integer.
此代码生成随机有符号整数,然后计算该随机整数的绝对值.如果随机数生成器返回的数字是Integer.MIN_VALUE,那么结果也将是负数,因为Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE.同样的问题也出现在长值上.
计算有符号随机整数绝对值的最佳方法是什么?
考虑一下byte.它的值范围从-128到127.假设您byte的值为-100,那么Math.abs(-100)将给出100.但是如果您的字节值是-128怎么办?你不能将128表示为a byte,因为它可以表示的最大值是127.所以Math.abs()简单地返回负参数,不变.
故事的寓意是,有可能Math.abs()返回负值.
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |