Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算有符号随机整数的绝对值_Java_Findbugs - Fatal编程技术网

Java 如何计算有符号随机整数的绝对值

Java 如何计算有符号随机整数的绝对值,java,findbugs,Java,Findbugs,我试图生成存储的随机数,我需要返回字符串值 以下是我的方法: public String generateRand() { java.util.Random rand = new java.util.Random(System.currentTimeMillis()); String rnd = "" + Math.abs(rand.nextInt()) + "" + Math.abs(System.currentTimeMillis()); return

我试图生成存储的随机数,我需要返回字符串值

以下是我的方法:

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;
}
Jenkins的Findbugs插件警告我,有人试图计算有符号随机整数的绝对值,

这段代码生成一个随机有符号整数,然后计算该随机整数的绝对值。如果随机数生成器返回的数字是
Integer.MIN\u VALUE
,那么结果也将是负数,因为
Math.abs(Integer.MIN\u VALUE)==Integer.MIN\u VALUE
。 长值也会出现同样的问题


计算有符号随机整数绝对值的最佳方法是什么?

考虑一个
字节。其值范围为-128到127。假设你的
byte
的值为-100,那么
Math.abs(-100)
会给你100。但是如果字节的值是-128呢?不能将128表示为
字节
,因为它可以表示的最大值是127。因此
Math.abs()
只返回负数参数,保持不变

这个故事的寓意是,
Math.abs()
可以返回负值。

使用

rand.nextInt(整数最大值)
而不是

Math.abs(rand.nextInt())

听起来插件可以识别特定的情况,
Math.abs(rand.nextInt())
。所以写些不同的东西


插件知道这种情况并不总是有效的:它知道rand.nextInt()有时可以返回Integer.MIN\u值,并且它知道无法计算Math.abs(Integer.MIN\u值)。我会考虑编写自己的随机数函数,该函数永远不会返回Integer.MIN_值。

我不认为jenkins会警告这些事情,你可能在谈论一些jenkins插件?它是findbugs和jenkins下一个问题-你是在问为什么行为是这样,还是如何计算单个随机整数的绝对值?你的主题似乎与你的正文相矛盾。我在问,在我的代码中,计算有符号随机整数绝对值的最佳方法是什么。在本例中,字符串rnd=“”+Math.abs(rand.nextInt())+“”+Math.abs(System.currentTimeMillis());正确,我认为这取决于Math.abs()返回的内容,特别是当返回值为负值时