
import java.util.Arrays; import java.util.Scanner; public class
importjava.util.Arrays;importjava.util.Scanner;publicclassw04{publicstaticvoidmain(St...
import java.util.Arrays;
import java.util.Scanner;
public class w04 {
public static void main(String[] args) {
String[] zf = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };
String num = "";
System.out.print("原字符序列:");
Scanner input=new Scanner(System.in);
for (int i = 0; i < zf.length; i++) {
System.out.print(zf[i] + " ");
}
Arrays.sort(zf);
System.out.print("\n升序排序后:");
for (int i = 0; i < zf.length; i++) {
System.out.print(zf[i] + " ");
}
System.out.println("\n带插入的字符是:");
num = input.next();
int index = 0;
for (int i = 0; i < zf.length; i++) {
if (num.compareTo(zf[i])>0)
index = i;
break;
}
}
} 展开
import java.util.Scanner;
public class w04 {
public static void main(String[] args) {
String[] zf = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };
String num = "";
System.out.print("原字符序列:");
Scanner input=new Scanner(System.in);
for (int i = 0; i < zf.length; i++) {
System.out.print(zf[i] + " ");
}
Arrays.sort(zf);
System.out.print("\n升序排序后:");
for (int i = 0; i < zf.length; i++) {
System.out.print(zf[i] + " ");
}
System.out.println("\n带插入的字符是:");
num = input.next();
int index = 0;
for (int i = 0; i < zf.length; i++) {
if (num.compareTo(zf[i])>0)
index = i;
break;
}
}
} 展开
展开全部
//这是数组扩容的思想,存入新值,还要保证老数组顺序不变:按照你的思想一一注释了!
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int index = -1;//索引
String num, zf[] = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" }, newArr[];
System.out.print("原字符序列:" + Arrays.toString(zf));
Scanner input = new Scanner(System.in);
Arrays.sort(zf);// 排序
System.out.print("\n升序排序后:" + Arrays.toString(zf));
System.out.println("\n带插入的字符是:");
num = input.nextLine().substring(0, 1);//输入待添加的字符!
newArr = new String[zf.length + 1];//新建一个临时数组,比老数组大一个单位长度!
for (int i = 0; i < zf.length; i++) {//循环遍历,找出添加值应该存放的索引位置!
if (num.compareTo(zf[i]) <= 0) {//依次对比,如果发现小于等于就是合适的位置
index = i;//用临时索引记录该位置,并跳出循环!
break;
}
}
//遍历老数组,把值一一对应存放在新数组里面,此刻新数组会空出一个位置来!
for (int i = 0; i < zf.length; i++) {
newArr[i] = zf[i];
}
//倒序遍历新数组,依次把值向后移动,一直移到目标索引位置就不在移动了!
for (int i = newArr.length - 1; i > index; i--) {
newArr[i] = newArr[i - 1];
}
//目标索引位置此刻是一个空值,把对应前面输入的字符串存放进去即可!
newArr[index] = num;
System.out.println("原数组:" + Arrays.toString(zf));
System.out.println("现数组:" + Arrays.toString(newArr));
}
}
总结一下:这种做法可以帮你理解数组扩容,缩容的思想,理解就可以了,API里面也是大概这么写的
只是更细致一些!
如果是作业:你不妨换个思路,新建一个数组比旧数组长度大一个单位就可以了
暂时不用排序,直接把你想要添加的值,存放在数组最后一个位置,其他值按照老数组赋值就可以了
最后在排序,是不是很简单呢?
如果你愿意还可以把老数组指向新数组引用,这样老数组就丢弃了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询