所以我有这个方法
public int sumMathRandomAndSystemTime(){
n = 1 + ((int) (Math.random() * 10)+
(int) (System.currentTimeMillis() % 10));
if(n > 10){
sumMathRandomAndSystemTime();
}
System.out.println(n);
return n;
}
我想要的只是在1到10之间打印一个随机数(n)。但由于某种原因,当我调用该方法时,它会打印一个随机数,但有时只打印一次,有时会打印出10次,5次等数字。为什么会这样?
这是我输出的一个例子
10
10
10
10
10
答案 0 :(得分:3)
如果原始随机数大于10,则代码将打印多行:每次递归调用一行。
您可以按照以下方式更改代码以解决此问题:
public int sumMathRandomAndSystemTime(){
Random random = new Random();
int n = random.nextInt(10);
System.out.println(n);
return n;
}
一般而言,更简单的代码是:
int a = 0987654321;
printf("%d",a);
答案 1 :(得分:1)
如果您只想打印1到10之间的一个随机数,请尝试这样的事情......
int n;
do
{
n = 1 + ((int) (Math.random() * 10) + (int) (System.currentTimeMillis() % 10));
} while(n > 10);
return n;
答案 2 :(得分:1)