java 随机生成6位邀请码、不重复

需求: 6位邀请码,字母数字混合,数字最多不超过四位。

 public static String getCode() {
    String code = generateCode();
    User user = userDao.selectByCode(code);
     if(user != null){
          return getCode();
       }else{
           return code ;
       }
 }


 public static String generateCode() {
        String charList = "ABCDEFGHIJKLMNPQRSTUVWXY";
        String numList = "0123456789";
        String rev = "";
        int maxNumCount = 4;
        int length = 6;
        Random f = new Random();
        for (int i = 0; i < length; i++) {
            if (f.nextBoolean() && maxNumCount > 0) {
                maxNumCount--;
                 rev += numList.charAt(f.nextInt(numList.length()));
            } else {
                rev += charList.charAt(f.nextInt(charList.length()));
            }
        }
        return rev;
    }
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要让Java生成随机的5数不重复,可以采用以下的方法: 1. 创建一个空的数组,用来存放生成随机数。 2. 使用Java的Random类,通过nextint方法生成一个5数(10000-99999之间的数字,不包括99999)。 3. 检查生成随机数是否在数组中已存在,如果已存在,则重新生成随机数,直到得到一个不重复的数字为止。 4. 将生成随机数存储到数组中,并继续生成下一个数字,直到数组中有5个不重复的数字为止。 5. 返回生成随机数数组。 在代码实现上,可以通过一个while循环来不断生成随机数,直到满足条件为止。具体实现可以参考以下代码片段: ``` import java.util.Arrays; import java.util.Random; public class RandomNumberGenerator { public static void main(String[] args) { int[] randomNumbers = new int[5]; Random random = new Random(); int count = 0; while (count < 5) { int number = random.nextInt(90000) + 10000; if (!contains(randomNumbers, number)) { randomNumbers[count] = number; count++; } } System.out.println(Arrays.toString(randomNumbers)); } private static boolean contains(int[] arr, int target) { for (int num : arr) { if (num == target) { return true; } } return false; } } ``` 这段代码使用了一个长度为5的int数组来存储生成随机数,通过一个计数器count来统计已经生成随机数的个数。在while循环中,使用random.nextInt方法生成随机数,再调用contains方法检查是否已经存在于数组中。如果不存在,则将该数字存入数组,并将计数器加一。最终输出数组即为5个不重复随机数字。 ### 回答2: Java是一种面向对象的编程语言,具有高效性、可移植性和可靠性等优势。当需要在Java生成一组5数不重复随机数时,可以采用以下方法: 1. 定义一个长度为5的数组arr用于存放随机数。 2. 使用Random类创建一个Random对象random,调用nextInt()方法生成随机数。 3. 判断随机数是否在数组arr中已经存在,若存在则重新生成随机数。 4. 若随机数不存在于数组中,则将其存入数组中。 5. 当数组中元素达到5个时,退出循环。 6. 最终输出数组中的所有元素。 以下为示例代码: ``` public static void main(String[] args) { int[] arr = new int[5]; //定义长度为5的数组 int index = 0; Random random = new Random(); while (index < 5) { //循环生成随机数 int num = random.nextInt(100000); //生成0-99999之间的随机数 boolean flag = false; //标记是否已在数组中存在 for (int i = 0; i < index; i++) { if (arr[i] == num) { //如果已存在,则重新生成随机数 flag = true; break; } } if (!flag) { //如果不存在,则存入数组 arr[index] = num; index++; } } System.out.println("随机数为:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } ``` 上述代码中,定义了一个长度为5的数组arr用于存放随机数,使用Random类创建了一个Random对象random,并调用nextInt()方法生成随机数。随后使用for循环判断随机数是否已经存在于数组中,若存在则重新生成随机数,并将其存入数组中。最终通过循环输出数组中的所有元素。 通过以上方法,我们可以在Java生成一组5数不重复随机数,希望可以帮助到您。 ### 回答3: 要生成重复的五数,可以利用Java提供的Random类和HashSet数据结构来实现。 首先,我们可以使用Random类生成随机数,代码如下: ``` Random random = new Random(); int n = random.nextInt(90000) + 10000; ``` 这段代码生成一个在10000到99999之间的随机整数n。 接着,我们可以创建一个HashSet数据结构,并将生成随机数加入到其中。HashSet是一种无序、不重复的集合,当我们往其中添加元素时,如果已经存在相同的元素,那么添加操作就会失败。这正好符合我们需要生成重复数字的条件。 代码如下: ``` Set<Integer> set = new HashSet<>(); while(set.size() < 5){ Random random = new Random(); int n = random.nextInt(90000) + 10000; set.add(n); } ``` 这段代码创建了一个HashSet集合set,并使用while循环加入元素,当集合大小为5时停止循环。 最后,我们可以将集合中的元素取出,输出到控制台。 代码如下: ``` for(int num : set){ System.out.print(num + " "); } ``` 这段代码使用for循环遍历HashSet集合set,将其中的元素取出,赋值给变量num,并输出到控制台。 完整代码如下: ``` import java.util.HashSet; import java.util.Random; import java.util.Set; public class Main { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); while(set.size() < 5){ Random random = new Random(); int n = random.nextInt(90000) + 10000; set.add(n); } for(int num : set){ System.out.print(num + " "); } } } ``` 执行上述代码,可以得到如下结果: ``` 67413 24073 23843 89754 69010 ``` 这就是随机生成的五个不重复的五数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值