[英]Why does my method sometimes print multiple lines?
所以我有这种方法
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
如果原始随机数大于10,则您的代码将打印多行:每个递归调用一行。
您可以按以下方式更改代码以解决此问题:
public int sumMathRandomAndSystemTime(){
int n = getRandomNumber();
System.out.println(n);
return n;
}
public int getRandomNumber() {
int n = 1 + ((int) (Math.random() * 10)+
(int) (System.currentTimeMillis() % 10));
if(n > 10){
n = getRandomNumber();
}
return n;
}
通常,更简单的代码是:
public int sumMathRandomAndSystemTime(){
Random random = new Random();
int n = random.nextInt(10);
System.out.println(n);
return n;
}
如果您只想打印1到10之间的一个随机数,请尝试这样的操作...
int n;
do
{
n = 1 + ((int) (Math.random() * 10) + (int) (System.currentTimeMillis() % 10));
} while(n > 10);
return n;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.