Java中的随机类

Java中的随机类,java,random,Java,Random,我正在使用Java创建一个预订系统,我想创建一个随机ID号。(我要展示的代码并不是我的类中所有的代码,它只是相关的东西。) 我命名了一个字段randomGenerator,它是一个随机对象,并在我的构造函数中声明了它: public class ReservationSystem { private Random randomGenerator; public ReservationSystem() { randomGenerator = new Ra

我正在使用Java创建一个预订系统,我想创建一个随机ID号。(我要展示的代码并不是我的类中所有的代码,它只是相关的东西。)

我命名了一个字段randomGenerator,它是一个随机对象,并在我的构造函数中声明了它:

public class ReservationSystem {
     private Random randomGenerator;

     public ReservationSystem() {
           randomGenerator = new Random();
     }
然后这就是我遇到困难的方法:

     public void generateCustomerID(String id, int numbersInID) {
     //incNumber stands for incremented number
     int incNumber = 1;
     //create a new array of numbers as big as the user has defined
     int[] numbers = new int[numbersInID];
     while(numbersInID < (incNumber +1)) {
         //add a new number to the array between 0 and 10
         numbers[incNumber] = randomGenerator.nextInt(10);
         incNumber++;
     }
     System.out.print(id);
     for(int number: numbers)
         System.out.print(number);
 }
我已经收到了输出AB-000

  • 在Java中,数组的索引从0开始,而不是从1开始
  • numbersind
    为3时,条件
    numbersind
    错误,循环体将不会执行
试试这个:

public void generateCustomerID(String id, int numbersInID) {
    //incNumber stands for incremented number
    int incNumber = 0;
    //create a new array of numbers as big as the user has defined
    int[] numbers = new int[numbersInID];
    while(incNumber < numbersInID) {
        //add a new number to the array between 0 and 10
        numbers[incNumber] = randomGenerator.nextInt(10);
        incNumber++;
    }
    System.out.print(id);
    for(int number: numbers)
        System.out.print(number);
}
public void generatecustomeId(字符串id,int-numbersind){
//incNumber代表递增的数字
int incNumber=0;
//创建一个与用户定义的数字一样大的新数组
int[]数字=新的int[numbersind];
while(incNumber
  • 在Java中,数组的索引从0开始,而不是从1开始
  • numbersind
    为3时,条件
    numbersind
    错误,循环体将不会执行
试试这个:

public void generateCustomerID(String id, int numbersInID) {
    //incNumber stands for incremented number
    int incNumber = 0;
    //create a new array of numbers as big as the user has defined
    int[] numbers = new int[numbersInID];
    while(incNumber < numbersInID) {
        //add a new number to the array between 0 and 10
        numbers[incNumber] = randomGenerator.nextInt(10);
        incNumber++;
    }
    System.out.print(id);
    for(int number: numbers)
        System.out.print(number);
}
public void generatecustomeId(字符串id,int-numbersind){
//incNumber代表递增的数字
int incNumber=0;
//创建一个与用户定义的数字一样大的新数组
int[]数字=新的int[numbersind];
while(incNumber
问题在于:

while(numbersInID < (incNumber +1)) { // ← *here*
     //add a new number to the array between 0 and 10
     numbers[incNumber] = randomGenerator.nextInt(10);
     incNumber++;
 }
问题在于:

while(numbersInID < (incNumber +1)) { // ← *here*
     //add a new number to the array between 0 and 10
     numbers[incNumber] = randomGenerator.nextInt(10);
     incNumber++;
 }

我不明白你为什么要一位数一位数地生成数字。如果你需要一个3位数的数字,只需要一个0-999之间的随机数。但是,您的方法有一个更基本的问题,即它不会检测ID冲突!我已经考虑过了!我该如何制作一个真正唯一的数字呢?如果你想让这些数字是随机的,你只需在每次检测到碰撞时不断获取一个新的随机数字。一旦你的数字快用完了,这会让你慢下来。另一种方法是保留一个未分配数字的列表,随机选取一个数字,然后每次都将其删除。我不明白你为什么要尝试逐位生成数字。如果你需要一个3位数的数字,只需要一个0-999之间的随机数。但是,您的方法有一个更基本的问题,即它不会检测ID冲突!我已经考虑过了!我该如何制作一个真正唯一的数字呢?如果你想让这些数字是随机的,你只需在每次检测到碰撞时不断获取一个新的随机数字。一旦你的数字快用完了,这会让你慢下来。另一种方法是保留一个未分配数字的列表,随机选取一个数字,然后每次都将其删除。@GeorginaBeckett此代码将只随机分配三个数字中的中间数字。你确定这就是你想要的吗?@GeorginaBeckett这段代码只会随机化三个数字中的中间数字。你确定这就是你想要的吗?