以下是一个Java程序示例,它从键盘输入10个字符,然后使用两个数组分别保存字符和对应的数字(假设字符是0-9的数字字符),并按从小到大的顺序输出两个序列。
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.regex.Pattern;
public class CharAndDigitSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] chars = new char[10];
int[] numbers = new int[10];
// 从键盘接收10个字符
System.out.println("Please enter 10 characters:");
for (int i = 0; i < 10; i++) {
chars[i] = scanner.next().charAt(0);
// 检查输入是否为单个字符
if (!Pattern.matches(".[a-zA-Z0-9]", String.valueOf(chars[i]))) {
System.out.println("Invalid input. Please enter single characters only.");
i--; // 重新输入当前项
}
}
// 将字符转换为对应的数字(如果字符是0-9)
for (int i = 0; i < chars.length; i++) {
if (Character.isDigit(chars[i])) {
numbers[i] = Character.getNumericValue(chars[i]);
} else {
numbers[i] = -1; // 使用-1表示非数字字符
}
}
// 复制数组以进行排序,因为Arrays.sort()会修改原始数组
char[] sortedChars = Arrays.copyOf(chars, chars.length);
int[] sortedNumbers = Arrays.copyOf(numbers, numbers.length);
// 对字符数组进行排序
Arrays.sort(sortedChars);
// 对数字数组进行排序,排除非数字字符
Arrays.sort(numbers);
sortedNumbers = Arrays.stream(numbers).filter(n -> n != -1).toArray();
System.out.println("Sorted characters: " + Arrays.toString(sortedChars));
System.out.println("Sorted numbers: " + Arrays.toString(sortedNumbers));
scanner.close();
}
}
这个程序首先使用Scanner
类从键盘接收10个字符,然后将其存储在chars
数组中。接着,程序检查每个字符是否为数字,并将数字字符转换为相应的整数值,存储在numbers
数组中。非数字字符在numbers
数组中用-1表示。
然后,程序使用Arrays.sort()
方法对两个数组进行排序。由于Arrays.sort()
会修改原始数组,因此我们先复制了一份数组以保留原始数据。
最后,程序输出排序后的字符序列和数字序列。非数字字符在数字序列中被排除。
要运行这个程序,你需要确保你的开发环境中已经安装了Java,并使用命令行或者IDE来编译和运行上述代码。程序将提示用户输入10个字符,然后显示排序后的结果。