首先,用char类型定义数据库letters,如果想实现有序的排列,数据库中的字符,可以用Arrays.sort(数组)实现排序。
//定义并赋值letters
char[] letters = {'a','b','c','e','f','p','u','z'};
//输出原字符序列
System.out.println("原字符序列:");
for (int i = 0; i < letters.length-1; i++) {
System.out.println(letters[i]);
}
为了方便实现要求,这里我们省略排序,直接在数组里做有序的排列。这里使用for循环来输出原字符序列方便查看作对比,letters.length表示数组长度,这里的变量i为下标。
//用新数组保存原数组
char[] newLetters = new char[letters.length +1];
for (int i = 0; i < letters.length; i++) {
newLetters[i] = letters[i];
}
其次,再用一个新的数组来存放原数组的字符,数组长度要比原数组多一位以便插入新的字符。
import java.util.Scanner;
Scanner input = new Scanner(System.in);
//输入待插入字符
System.out.println("待插入字符是:");
char letter = input.next().charAt(0);
要输入新的字符必须要导入Scanner包,这里char类型需使用input.next().charAt(),因为我们需要第一位字符,所以括号内输入0。
//查找合适的位置
//index赋值倒数第一个下标
int index = newLetters.length -1;
for (int i = 0; i < newLetters.length-1 ; i++) {
//依次判断newLetters[]数组与输入值letter的大小
if (newLetters[i] > letter){
index = i;
break; //若大于输入值letter则跳出循环
}
}
定义变量index并赋值,这时newletters[8]为null,判断输入值letter与newLetters大小,当newLetters[i]>letter时,下标i赋值给index,随后直接break直接退出。
System.out.println("插入字符的下标是:"+index);
//后面的元素依次向后移动
for (int i = newLetters.length-2; i >= index ; i--) {
newLetters[i+1] = newLetters[i];
}
//把新元素存入合适的位置
newLetters[index] = letter;
//输出插入后的字符序列
System.out.println("插入后的字符序列是:");
for (int i = 0; i < newLetters.length; i++) {
System.out.print(newLetters[i]+"\t");
}
因为newletter最后一个空位null,所以我们从倒数第二位开始依次向后移动,将前一位的值赋值给后一位。再出循环,将letter输入的字符赋值给newletters[index]。
最后用for循环输出。