在java中将一个由10位数字组成的字符串转换成整数,或者生成一个10位长的随机整数来创建一个帐号

gev0vcfq  于 2021-07-23  发布在  Java
关注(0)|答案(2)|浏览(480)

我想生成一个大于1000000000小于99999999的十位数帐号。我有3个独立的尝试,几乎都可以操作,但9位数后,我要么收到一个错误,要么生成的数字不是预期的结果。

  1. for(int i = 0; i < 10; i++) {
  2. int r = rand.nextInt(10);
  3. int l = (int)Math.pow(10,i);
  4. int currentRand = r * l;
  5. System.out.println("i: "+ i+ ", random int: "+ r+", ten to the pow i: "+ l+ ", currentRand: "+ currentRand);
  6. }
  1. int n = rand.nextInt(89999) + 10000;
  2. int n1 = rand.nextInt(89999) + 10000;
  3. int n2 = Math.multiplyExact(n*100000);
  4. System.out.println(n);
  5. System.out.println(n1);
  6. System.out.println(n2);
  1. int accountNum;
  2. String ofNumber = "";
  3. for(int i = 0; i < 10;i++) {
  4. ofNumber += String.valueOf(rand.nextInt(10));
  5. System.out.println(ofNumber);
  6. }
  7. accountNum = Integer.parseInt(ofNumber);
uelo1irk

uelo1irk1#

可表示为 int2147483647 ,因此大约78%的10位数字范围大于存储在 int . 使用其中一个 long 或者 BigInteger .

wmtdaxz3

wmtdaxz32#

正如jim garrison所说,你的帐号不适合int,但适合long。
random类允许您生成一个介于最小值(包含)和最大值(排除)之间的随机长数流。下面是一个打印出10个帐号的示例:
我假设你想要的最小帐号是1000000000,最大的是999999999

  1. import java.util.Random;
  2. public class AccountNumberDemo {
  3. public static void main(String[] args) {
  4. Random rand = new Random();
  5. rand.longs(10, 1_000_000_001L, 10_000_000_000L)
  6. .forEach(System.out::println);
  7. }
  8. }

如果您只想在一个变量中输入一个帐号,那么下面将演示如何执行此操作:

  1. import java.util.Random;
  2. public class AccountNumberDemo {
  3. public static void main(String[] args) {
  4. Random rand = new Random();
  5. long accountNumber = rand
  6. .longs(1, 1_000_000_001L, 10_000_000_000L)
  7. .findFirst()
  8. .getAsLong();
  9. System.out.println(accountNumber);
  10. }
  11. }
展开查看全部

相关问题