如何解决将十位数的字符串转换为整数或生成 10 位数长的随机整数以在 Java 中创建帐号
我想生成一个大于 1,000,000 且小于 9,999,999 的十位数帐号。我有 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);
解决方法
可表示为 int
的最大值是 2147483647
,因此 10 位数字范围的大约 78% 大于可以存储在 int
中的值。使用 long
或 BigInteger
。
正如 Jim Garrison 所说,您的帐号不能放入 int,但可以放入 long。
Random 类允许您生成一个介于最小值(包含)和最大值(不包含)之间的随机长数流。这是一个打印出 10 个帐号的示例:
我假设您想要的最小帐号是 1000000000,最大帐号是 9999999999
import java.util.Random;
public class AccountNumberDemo {
public static void main(String[] args) {
Random rand = new Random();
rand.longs(10,1_000_000_001L,10_000_000_000L)
.forEach(System.out::println);
}
}
如果您只想在变量中包含一个帐号,那么这将显示如何操作:
import java.util.Random;
public class AccountNumberDemo {
public static void main(String[] args) {
Random rand = new Random();
long accountNumber = rand
.longs(1,10_000_000_000L)
.findFirst()
.getAsLong();
System.out.println(accountNumber);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。