我遇到0-9
方法的问题,因为它不会返回随机整数。结果必须是int范围public class RandNumGenerator {
public static int RandInt() {
int n = (int) Math.random() * 10;
return n;
}
public static void main(String[] args) {
RandInt();
}
}
并且必须使用math.random类。这是我的代码:
String value = valueCommingFromSomewhere;
if (value == null) {
value = "myDefaultValue";
}
答案 0 :(得分:5)
你应该在乘以10后将double转换为int:
int n = (int) (Math.random() * 10);
否则你总是得到0(因为Math.random()<1.0
,所以(int)Math.random()
总是0)。
答案 1 :(得分:3)
Casting has higher priority than *
所以代码
(int) Math.random() * 10;
与
相同((int) Math.random()) * 10;
,因为Math.random()
会将范围[0; 1)
(1 - 排除)中的值转换为int
(int) Math.random()
将生成0
,乘以10也将返回0
。
您可能想要使用
(int) (Math.random() * 10)
或更容易阅读和维护Random#nextInt(max)
以生成范围[0; max)
(max
- 独家)
答案 2 :(得分:1)
您需要在乘法
周围加上括号int n = (int) (Math.random() * 10);
正在发生的事情是
int n = ((int) Math.random()) * 10;
因为Math.random()
总是大于或等于0且小于1,将其转换为整数将始终等于零。将它乘以10将无能为力。
答案 3 :(得分:-1)
您不应该使用Math.random()来生成随机整数,因为它会生成随机浮点数(即十进制数)
你应该做类似的事情
Random myRandom = new Random();
int randomInt = myRandom.nextInt(10);