采用java编程,实现包含大小写A-Z和数字0-9,总共长度为4或5,内容都是随机的,但是数字不能连续的代码
时间: 2024-09-10 18:16:50 浏览: 14
在Java中,你可以使用`Random`类配合字符串的构造函数以及循环来生成满足条件的随机字符串。以下是一个简单的示例代码:
```java
import java.util.Random;
public class RandomStringGenerator {
private static final String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz";
private static final String NUMBER = "0123456789";
private static final int MIN_LENGTH = 4;
private static final int MAX_LENGTH = 5;
public static void main(String[] args) {
String randomStr = generateRandomString();
System.out.println("Random string: " + randomStr);
}
public static String generateRandomString() {
Random rand = new Random();
StringBuilder sb = new StringBuilder();
// 保证第一个字符不是数字
if (rand.nextInt(2) == 0) { // 50%的概率选择字母开头
sb.append(randomCharFrom(CHAR_LOWER));
} else {
sb.append(randomCharFrom(NUMBER));
}
for (int i = 1; i < Math.min(MAX_LENGTH, MIN_LENGTH); i++) {
// 从两个字符集中交替选择防止连续数字
if (sb.charAt(sb.length() - 1) != sb.charAt(sb.length() - 2)) {
sb.append(randomCharFrom(i % 2 == 0 ? CHAR_LOWER : NUMBER));
}
}
// 如果需要最大长度,再添加一个字符
if (MAX_LENGTH > MIN_LENGTH && sb.length() < MAX_LENGTH) {
sb.append(randomCharFrom(NUMBER)); // 添加最后一个数字,因为之前已经加了一个
}
return sb.toString();
}
private static char randomCharFrom(String chars) {
int index = rand.nextInt(chars.length());
return chars.charAt(index);
}
}
```
这段代码首先创建一个随机数生成器,然后构建一个`StringBuilder`用于存储随机字符串。它会保证第一个字符是字母,之后的每个字符都会从字母和数字中交替选取,以避免连续的数字。如果最终字符串长度小于最大允许长度,还会添加一个数字。