Java 随机验证码生成器:去重算法实现
Java 随机验证码生成器:去重算法实现
本教程将向您展示如何在 Java 中创建一个随机验证码生成器。该生成器将从用户输入的字符串中随机选择 5 个不重复的字符,并将其组合成一个验证码。
步骤:
- 从控制台输入一个字符串,大于 20 个字符
- 从字符串中随机获取 5 个字符拼接成一个验证码
扩展要求:验证码中不包含重复字符
实现代码如下:
import java.util.Random;
import java.util.Scanner;
public class RandomCodeGenerator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 1. 从控制台输入一个字符串,大于 20 个字符
System.out.print("请输入一个大于 20 个字符的字符串:");
String input = scanner.nextLine();
while (input.length() <= 20) {
System.out.print("输入的字符串长度不足 20,请重新输入:");
input = scanner.nextLine();
}
// 2. 从字符串中随机获取 5 个字符拼接成一个验证码
Random random = new Random();
StringBuilder codeBuilder = new StringBuilder();
for (int i = 0; i < 5; i++) {
int index = random.nextInt(input.length());
char c = input.charAt(index);
if (codeBuilder.indexOf(String.valueOf(c)) == -1) { // 验证码中不包含重复字符
codeBuilder.append(c);
} else {
i--; // 如果生成的字符已经在验证码中了,需要重新生成
}
}
String code = codeBuilder.toString();
System.out.println("生成的验证码为:" + code);
}
}
运行结果示例:
请输入一个大于 20 个字符的字符串:abcdefghijklmnopqrstuvwxyz1234567890
生成的验证码为:o3qxy
代码解释:
- 该程序使用
Scanner类从控制台获取用户输入的字符串。 - 使用
Random类生成随机数,并使用它来选择输入字符串中的随机字符。 - 使用
StringBuilder类来构建验证码。 - 使用
indexOf方法检查生成的字符是否已存在于验证码中,以确保验证码中不包含重复字符。 - 如果生成的字符已存在于验证码中,则循环计数器减 1,重新生成字符。
总结:
本教程提供了一个简单的 Java 随机验证码生成器,它使用随机数生成器和循环算法从用户输入的字符串中提取不重复的字符。您可以根据需要修改该代码,例如更改验证码的长度或使用不同的字符集。
原文地址: https://www.cveoy.top/t/topic/myYc 著作权归作者所有。请勿转载和采集!