如何使用Java设置程序以使用以下语句生成5位数字:
int n = (int)Math.floor(Math.random()*100000+1)
还必须打印生成的数字。我尝试过这种不同的方式,并不断出现错误。
答案 0 :(得分:6)
有两种方法可以查看您的问题。您需要确保随机数生成器仅生成具有五位数的数字(在10000 - 99999范围内),或者当生成的数字太低时,您需要打印带前导0的数字。
使用Java的Random类最好地满足第一种方法。
Random rand = new Random();
int n = rand.nextInt(90000) + 10000;
System.out.println(n);
如果你以某种方式限制你必须使用你问题中的陈述,那么第二种方法可能就是你所追求的。您可以使用Java的DecimalFormat类在打印前格式化带前导零的随机数。
n = (int)Math.floor( Math.random() * 100000 + 1 );
NumberFormat formatter = new DecimalFormat("00000");
String number = formatter.format(n);
System.out.println("Number with lading zeros: " + number);
答案 1 :(得分:2)
有人可能会这样做:
public class Test {
public static void main(String[] args) {
int n = (int)Math.floor(Math.random()*100000+1);
System.out.println(n);
}
}
但是,这确实不是生成随机整数的首选方法。查看Random课程。
答案 2 :(得分:2)
Random r = new Random();
for (;;) {
System.out.println(10000 + r.nextInt(90000));
}
答案 3 :(得分:0)
更好的想法是通过连续生成5个随机数字来生成数字。使第一个数字不为零可确保生成的数字始终为5位数。我在下面发布伪代码,应该很容易将其转换为Java代码。
A = List(1,2,3,4,5,6,7,8,9)
B = List(0,1,2,3,4,5,6,7,8,9)
output = 0
output=random.choice(A) //first digit from A, no zeros
for i=0 to 4
output=output*10
output=output+random.choice(B) //next digits from B, can have zero
return output
如果您遇到困难,请查看随机的API文档。
答案 4 :(得分:0)
获取随机数00000 - 99999的方法是使用以下内容。
Random r= new Random();
// possibly too obtuse for most readers. ;)
System.out.println((""+(100000+r.nextInt(100000))).substring(1));