Java a,c,u,b,e,p,f,z按升序排列,插入字符后依旧是升序排列
题目是升序排列后插入一个字母是要键盘输入的publicstaticvoidmain(String[]args){//a,c,u,b,e,p,f,z按升序排列,插入字符后依...
题目是升序排列后插入一个字母是要键盘输入的
public static void main(String[] args) {
// a,c,u,b,e,p,f,z按升序排列,插入字符后依旧是升序排列
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
System.out.print("原字符序列:");
for (int i = 0; i < name.length; i++) {
System.out.print(name[i] + "\t");// 原字符排序
}
Arrays.sort(name);//升序排列
System.out.print("\n升序排序后:");
for (int i = 0; i < name.length; i++) {
System.out.print(name[i] + "\t");// 升序排列
}
int index = name.length;// 保存新增字母插入
System.out.print("\n待插入的字母是:");
Scanner scanner = new Scanner(System.in);
// 元素后移
for (int j = name.length - 1; j > index; j--) {// j表示元素
name[j] = name[j - 1];// 后移一个位置
}
name[index] = "m";// 插入数据
System.out.println("插入字符的下标是:" + index);
System.out.println("插入后的字符序列是:");
for (int k = 0; k < name.length; k++) {// 新的排序
System.out.print("name[k]" + "\t");
}
}
请问哪错了,接下来该怎么做 展开
public static void main(String[] args) {
// a,c,u,b,e,p,f,z按升序排列,插入字符后依旧是升序排列
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
System.out.print("原字符序列:");
for (int i = 0; i < name.length; i++) {
System.out.print(name[i] + "\t");// 原字符排序
}
Arrays.sort(name);//升序排列
System.out.print("\n升序排序后:");
for (int i = 0; i < name.length; i++) {
System.out.print(name[i] + "\t");// 升序排列
}
int index = name.length;// 保存新增字母插入
System.out.print("\n待插入的字母是:");
Scanner scanner = new Scanner(System.in);
// 元素后移
for (int j = name.length - 1; j > index; j--) {// j表示元素
name[j] = name[j - 1];// 后移一个位置
}
name[index] = "m";// 插入数据
System.out.println("插入字符的下标是:" + index);
System.out.println("插入后的字符序列是:");
for (int k = 0; k < name.length; k++) {// 新的排序
System.out.print("name[k]" + "\t");
}
}
请问哪错了,接下来该怎么做 展开
5个回答
展开全部
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
你原先自己已经定义了数组长度
name[index] = "m";// 插入数据这里
你插入的话肯定会超出自己原先定义的长度
办法:再定义一个数组,把计算好总数组长度丢进去
int a[]=new int[n]; n代表总数组长度
然后把一个个赋值进去
你原先自己已经定义了数组长度
name[index] = "m";// 插入数据这里
你插入的话肯定会超出自己原先定义的长度
办法:再定义一个数组,把计算好总数组长度丢进去
int a[]=new int[n]; n代表总数组长度
然后把一个个赋值进去
更多追问追答
追问
怎么丢进去
追答
计算好的总算组长度,先当n
String aa[]=new String[n]
int num=0;
for(int i=0;i<n;i++){
if(i!=index){ //index是你之前算出来要插的位置
aa[i]=m
}else{
aa[i]=name[num]
num++
}
}
展开全部
第一步先比较写入的值该放在哪;
第二步数组扩容;
第三步从写入的值开始后移;
最后将写入的值赋给空出的位置
public static void main(String[] args) {
// a,c,u,b,e,p,f,z按升序排列,插入字符后依旧是升序排列
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
Arrays.sort(name);// 升序排列
System.out.print("\n升序排序后:"+Arrays.toString(name));
System.out.println("请输入一个字符!");
Scanner scan = new Scanner(System.in);
//输入字符
String str = scan.nextLine();
int c = str.charAt(0);
int index=0;
for(int i=0;i<name.length;i++){
//因为数组里面是String类型,所以用charAt(0)来获取
if(c<=name[i].charAt(0)){
//这边获得index位置就是需要放入的位置
index=i;
break;
}
}
//扩容数组
name = Arrays.copyOf(name, name.length+1);
//从index位置开始往后退一位,从最后一个开始依次往后
for(int i=name.length-1;i>index;i--){
name[i]=name[i-1];
}
//将写入的值填入空位
name[index] = str;
System.out.println(Arrays.toString(name));
}
第二步数组扩容;
第三步从写入的值开始后移;
最后将写入的值赋给空出的位置
public static void main(String[] args) {
// a,c,u,b,e,p,f,z按升序排列,插入字符后依旧是升序排列
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
Arrays.sort(name);// 升序排列
System.out.print("\n升序排序后:"+Arrays.toString(name));
System.out.println("请输入一个字符!");
Scanner scan = new Scanner(System.in);
//输入字符
String str = scan.nextLine();
int c = str.charAt(0);
int index=0;
for(int i=0;i<name.length;i++){
//因为数组里面是String类型,所以用charAt(0)来获取
if(c<=name[i].charAt(0)){
//这边获得index位置就是需要放入的位置
index=i;
break;
}
}
//扩容数组
name = Arrays.copyOf(name, name.length+1);
//从index位置开始往后退一位,从最后一个开始依次往后
for(int i=name.length-1;i>index;i--){
name[i]=name[i-1];
}
//将写入的值填入空位
name[index] = str;
System.out.println(Arrays.toString(name));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String[] name = new String[] { "a", "c", "u", "b", "e", "p", "f", "z" };// 字母数组
你原先自己已经定义了数组长度
name[index] = "m";// 插入数据这里
你插入的话肯定会超出自己原先定义的长度
办法:再定义一个数组,把计算好总数组长度丢进去
int a[]=new int[n]; n代表总数组长度
然后把一个个赋值进去
你原先自己已经定义了数组长度
name[index] = "m";// 插入数据这里
你插入的话肯定会超出自己原先定义的长度
办法:再定义一个数组,把计算好总数组长度丢进去
int a[]=new int[n]; n代表总数组长度
然后把一个个赋值进去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String strInput = scanner.nextLine();
加上这个接收输入的语句就行了
加上这个接收输入的语句就行了
追问
加了运行之后还是不行,显示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at com.wlw.Book4.main(Book4.java:28)
追答
System.out.print("\n待插入的字母是:");
Scanner scanner = new Scanner(System.in);
//新增这一句
String strInput = scanner.nextLine();
//然后放到数组中去
......
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为index=8,而数组是0-7,所以产生了下标越界异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询