java实现数组字符插入问题
* 题目:
* 给出一串按顺序排列的字符,将另一个字符按顺序插入其中
*
*/
public class charInsert {
public static void main(String[] args) {
// 这是要插入的字符
char c = w;
// 这是字符数组
char[] ch = new char[9];
ch[0] = a;
ch[1] = b;
ch[2] = c;
ch[3] = f;
ch[4] = g;
ch[5] = i;
ch[6] = l;
ch[7] = z;
// 打印插入之前字符排列顺序
for (int i = 0; i < ch.length; i++) {
System.out.print(ch[i] + " ");
}
// index为假设字符要插入的位置
int index = ch.length;
// 通过for循环找到要插入的位置
for (int j = 0; j < ch.length; j++) {
if (c < ch[j]) {
index = j;
break;
}
}
// 打印要插入的位置看一下是否有问题
// System.out.println(index);
// 这是很重要的一步将数组的数据进行下移
for (int k = ch.length - 1; k > 0; k--) {
ch[k] = ch[k - 1];
}
// 将数据下移后空出的位置就可以插入数据了
ch[index] = c;
// 查看插入后的数组数据
for (int l = 0; l < ch.length; l++) {
System.out.print(ch[l] + " ");
}
}
}
如果你想把最后一个字母换成y插入字符z 那么这个代码是不对的应该这样写
public class charInsert { public static void main(String[] args) { // 这是要插入的字符 char c = z; // 这是字符数组 char[] ch = new char[9]; ch[0] = a; ch[1] = b; ch[2] = c; ch[3] = f; ch[4] = g; ch[5] = i; ch[6] = l; ch[7] = w; // 打印插入之前字符排列顺序 for (int i = 0; i < ch.length; i++) { System.out.print(ch[i] + " "); } // index为假设字符要插入的位置 int index = ch.length-1; // 通过for循环找到要插入的位置 for (int j = 0; j < ch.length; j++) { if (c < ch[j]) { index = j; break; } } // 打印要插入的位置看一下是否有问题 System.out.println("index:"+index); // 这是很重要的一步将数组的数据进行下移 如果要插入的位置在最后一个就不需要进行数据下移了 if(index != ch.length-1){ for (int k = ch.length - 1; k > 0; k--) { ch[k] = ch[k - 1]; } } // 将数据下移后空出的位置就可以插入数据了 ch[index] = c; // 查看插入后的数组数据 for (int l = 0; l < ch.length; l++) { System.out.print(ch[l] + " "); } }