我想生成一个大于1000000000小于99999999的十位数帐号。我有3个独立的尝试,几乎都可以操作,但9位数后,我要么收到一个错误,要么生成的数字不是预期的结果。
for(int i = 0; i < 10; i++) {
int r = rand.nextInt(10);
int l = (int)Math.pow(10,i);
int currentRand = r * l;
System.out.println("i: "+ i+ ", random int: "+ r+", ten to the pow i: "+ l+ ", currentRand: "+ currentRand);
}
int n = rand.nextInt(89999) + 10000;
int n1 = rand.nextInt(89999) + 10000;
int n2 = Math.multiplyExact(n*100000);
System.out.println(n);
System.out.println(n1);
System.out.println(n2);
int accountNum;
String ofNumber = "";
for(int i = 0; i < 10;i++) {
ofNumber += String.valueOf(rand.nextInt(10));
System.out.println(ofNumber);
}
accountNum = Integer.parseInt(ofNumber);
2条答案
按热度按时间uelo1irk1#
可表示为
int
是2147483647
,因此大约78%的10位数字范围大于存储在int
. 使用其中一个long
或者BigInteger
.wmtdaxz32#
正如jim garrison所说,你的帐号不适合int,但适合long。
random类允许您生成一个介于最小值(包含)和最大值(排除)之间的随机长数流。下面是一个打印出10个帐号的示例:
我假设你想要的最小帐号是1000000000,最大的是999999999
如果您只想在一个变量中输入一个帐号,那么下面将演示如何执行此操作: