Java 我的随机数发生器不工作,已经试过看其他问题,没有解决

Java 我的随机数发生器不工作,已经试过看其他问题,没有解决,java,eclipse,Java,Eclipse,所以我在这个网站上查了很多答案,但没有结果,我没有发现任何错误,我只是打印了最小值。我不知道如何让程序在输入的两个值之间生成一个随机整数在以下表达式中,您的随机数被截断为0: package Review_Randomnum; import java.util.Scanner; public class RandomNum { public static void main(String[] args) { System.out.println("Please e

所以我在这个网站上查了很多答案,但没有结果,我没有发现任何错误,我只是打印了最小值。我不知道如何让程序在输入的两个值之间生成一个随机整数

在以下表达式中,您的随机数被截断为0:

package Review_Randomnum;
import java.util.Scanner;



public class RandomNum {

    public static void main(String[] args) {
        System.out.println("Please enter a minimum value: ");
        Scanner input = new Scanner(System.in);
        int first = input.nextInt();
        System.out.println("Please enter a maximum value: ");
        int second = input.nextInt();
        int number = ((int)(Math.random()) * ((second - first)) + first);
        System.out.println(number);


    }

} 
原因是
Math.random()
返回一个大于或等于
0
且小于
1
的双精度,当转换为
int
时,该双精度将被截断为
0
(有关详细信息,请参阅)

相反,首先将所需的数字计算为
双精度
,然后返回到
整数

((int)(Math.random())

您的随机数在以下表达式中被截断为0:

package Review_Randomnum;
import java.util.Scanner;



public class RandomNum {

    public static void main(String[] args) {
        System.out.println("Please enter a minimum value: ");
        Scanner input = new Scanner(System.in);
        int first = input.nextInt();
        System.out.println("Please enter a maximum value: ");
        int second = input.nextInt();
        int number = ((int)(Math.random()) * ((second - first)) + first);
        System.out.println(number);


    }

} 
原因是
Math.random()
返回一个大于或等于
0
且小于
1
的双精度,当转换为
int
时,该双精度将被截断为
0
(有关详细信息,请参阅)

相反,首先将所需的数字计算为
双精度
,然后返回到
整数

((int)(Math.random())

更好的解决方案是使用:
Random rnd=new Random();整数=rnd.nextInt(第二个-第一个+1)+第一个此外,您还错过了
+1
。没有它,您将永远无法获得“最大值”,即
second
的值。更好的解决方案是使用:
Random rnd=new Random();整数=rnd.nextInt(第二个-第一个+1)+第一个此外,您还错过了
+1
。没有它,您将永远无法获得“最大值”,即
second
的值。