Java 我的随机数发生器不工作,已经试过看其他问题,没有解决
所以我在这个网站上查了很多答案,但没有结果,我没有发现任何错误,我只是打印了最小值。我不知道如何让程序在输入的两个值之间生成一个随机整数在以下表达式中,您的随机数被截断为0: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
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
的值。