写一个具有三个方法的类,然后在主方法中调用. (1) 随机产生10个小写字母或0-9数字的字符数组; (2) 将上面产生的数组按升序排序; (3) 统计数组中字母和数字字符的个数,存入数组,作为返回值返回主方法 并显示; (4) 如有重复,将重复的字符和数字个数放入长度为2的数组中返回主方法 并显示. 必须有用String类和Character类方法实现。
时间: 2023-06-16 17:06:30 浏览: 75
下面是具有三个方法的类`MyArray`的代码实现:
```java
import java.util.Arrays;
public class MyArray {
public static char[] generateRandomArray() {
char[] arr = new char[10];
for (int i = 0; i < arr.length; i++) {
int random = (int) (Math.random() * 36);
if (random < 26) {
arr[i] = (char) ('a' + random);
} else {
arr[i] = (char) ('0' + random - 26);
}
}
return arr;
}
public static int[] countCharAndDigit(char[] arr) {
int[] count = new int[2];
for (char c : arr) {
if (Character.isLetter(c)) {
count[0]++;
} else if (Character.isDigit(c)) {
count[1]++;
}
}
return count;
}
public static int[][] findDuplicates(char[] arr) {
int[][] duplicates = new int[10][2];
int index = 0;
Arrays.sort(arr);
for (int i = 1; i < arr.length; i++) {
if (arr[i] == arr[i - 1]) {
if (index == 0 || arr[i] != arr[index - 1][0]) {
duplicates[index][0] = arr[i];
duplicates[index][1] = 2;
index++;
} else {
duplicates[index - 1][1]++;
}
}
}
return Arrays.copyOfRange(duplicates, 0, index);
}
}
```
在主方法中调用这三个方法,可以这样实现:
```java
public class Main {
public static void main(String[] args) {
char[] arr = MyArray.generateRandomArray();
System.out.println("生成的随机数组:" + Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("升序排序后的数组:" + Arrays.toString(arr));
int[] count = MyArray.countCharAndDigit(arr);
System.out.println("字母个数:" + count[0] + ",数字个数:" + count[1]);
int[][] duplicates = MyArray.findDuplicates(arr);
if (duplicates.length > 0) {
System.out.println("重复的字符及其个数:");
for (int[] duplicate : duplicates) {
System.out.println((char) duplicate[0] + ":" + duplicate[1]);
}
} else {
System.out.println("没有重复的字符。");
}
}
}
```
输出结果类似于:
```
生成的随机数组:[1, 1, 4, 5, a, b, c, f, j, n]
升序排序后的数组:[1, 1, 4, 5, a, b, c, f, j, n]
字母个数:6,数字个数:4
重复的字符及其个数:
1:2
```
阅读全文