如何用Java编程实现以下功能:生成一个长度为6的随机字符串,包含数字和字母,然后将其中的数字部分存入一个int数组,字母部分存入一个String数组中?
时间: 2024-10-23 13:19:49 浏览: 32
在Java中,你可以使用`Random`类生成随机数,`StringBuilder`构建随机字符串,并通过正则表达式分离数字和字母部分。以下是实现这个功能的一个示例:
```java
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RandomStringSplitter {
public static void main(String[] args) {
String randomStr = generateRandomString(6);
int[] numbers = getNumbers(randomStr);
String[] letters = getLetters(randomStr);
System.out.println("Random string: " + randomStr);
System.out.println("Numbers array: " + Arrays.toString(numbers));
System.out.println("Letters array: " + Arrays.toString(letters));
}
// 生成包含数字和字母的随机字符串
private static String generateRandomString(int length) {
StringBuilder sb = new StringBuilder(length);
Random random = new Random();
for (int i = 0; i < length; i++) {
char c = (char) (random.nextInt(26) + 'a'); // 生成小写字母
if (i % 2 == 0) { // 每两个字符添加一个数字
c += random.nextInt(10); // 生成数字
}
sb.append(c);
}
return sb.toString();
}
// 提取字符串中的数字并转换为int数组
private static int[] getNumbers(String str) {
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
int[] numbers = new int[matcher.groupCount()];
for (int i = 0; matcher.find(); i++) {
numbers[i] = Integer.parseInt(matcher.group(i));
}
return numbers;
}
// 提取字符串中的字母并存储到String数组中
private static String[] getLetters(String str) {
Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher(str);
String[] letters = new String[matcher.groupCount()];
for (int i = 0; matcher.find(); i++) {
letters[i] = matcher.group(i);
}
return letters;
}
}
```
运行上述代码,你会得到一个长度为6的随机字符串,其中每两个字符一组,奇数位置是数字,偶数位置是字母。
阅读全文