小白求助,弄了一个下午没弄明白

zmy244 2017-09-18 06:57:49
要求:现有一组有序的字符序列a,b,c,e,f,p,u,z,要往此字符序列中插入一个新字符,要求插入新字符后任保持有序。
运行结果:
原字符序列:a b c e f p u z
待插入的字符:m
插入字符的下标:5
插入后的字符序列:a b c e f m p u z
我下午写的代码:
import java.util.*;
public class p153 {
public static void main(String[] args) {
char letter[]=new char[9];
letter[0]='a';
letter[1]='b';
letter[2]='c';
letter[3]='e';
letter[4]='f';
letter[5]='p';
letter[6]='u';
letter[7]='z';
System.out.print("原字符序列:");
Arrays.sort(letter);
for(int i=0;i<8;i++){
System.out.print(letter[i]+" ");
}
System.out.println("");
Scanner input=new Scanner(System.in);
System.out.print("待输入的字符是:");
char str=input.next().charAt(0);
for(int i=0;i<letter.length;i++){
if(letter[i]>str){
System.out.println("插入字符的下标是:"+i);
break;
}
}
letter[index]=str;
for(int i=letter.length-1;str<letter[i];i--){
letter[i]=letter[i-1];

}
System.out.print("插入后的字符序列是:");
for(int k=0;k<letter.length;k++){
System.out.print(letter[k]);
}
}
}
...全文
687 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmy244 2017-09-22
  • 打赏
  • 举报
回复
import java.util.Arrays; import java.util.Scanner; public class p154 { public static void main(String[] args) { String[] arr={"a","b","c","e","f","p","u","z",null}; System.out.print("原字符序列:"); for(int i=0;i<arr.length-1;i++){ System.out.print(arr[i]+" "); } Scanner ch=new Scanner(System.in); System.out.println(""); System.out.print("待插入的字符是:"); arr[8]=ch.next(); Arrays.sort(arr); for (int i=0;i<arr.length;i++){ if(arr[i].equals(ch.next())){ System.out.print("插入字符的下标为:"+i); break; } } for (int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } }
行走的老熊 2017-09-18
  • 打赏
  • 举报
回复
package package1; import java.util.Arrays; public class TestDemo { public static void main(String[] args) { char[] oldArr = { 'a', 'b', 'c', 'e', 'f', 'p', 'u', 'z' }; char key = 'm'; char[] newArr = new char[oldArr.length + 1]; int pos = 0; for (int i = 0; i < oldArr.length; i++) { //这个for循环是为了找'm'比谁小 if (key < oldArr[i]) { pos = i; break; } } for (int j = 0; j < pos; j++) { newArr[j] = oldArr[j]; } newArr[pos] = key; for(int j=pos+1;j<newArr.length;j++){ newArr[j] = oldArr[j-1]; } System.out.println(Arrays.toString(oldArr)); System.out.println(Arrays.toString(newArr)); } }
Freefish1994 2017-09-18
  • 打赏
  • 举报
回复

public class Test {
	public static void main(String[] args) {
		char[] chars1 = new char[] { 'a', 'b', 'c', 'e', 'f', 'p', 'u', 'z' };
		char[] chars2 = new char[chars1.length + 1];
		System.out.print("原始字符数组:");
		for (char ch : chars1)
			System.out.print(ch + " ");
		System.out.println();
		System.arraycopy(chars1, 0, chars2, 0, chars1.length);
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个小写英文字母");
		String input = null;
		while (true) {
			input = scanner.nextLine();
			if (input.length() > 1 || !Character.isLowerCase(input.toCharArray()[0]))
				System.out.println("请重新输入");
			else
				break;
		}
		scanner.close();
		chars2[chars2.length - 1] = input.toCharArray()[0];
		Arrays.sort(chars2);
		System.out.print("新字符数组:");
		for (char ch : chars2)
			System.out.print(ch + " ");
	}
}
爪哇工作者 2017-09-18
  • 打赏
  • 举报
回复
import java.util.*; public class p153 { public static void main(String[] args) { char letter[] = new char[9]; letter[0] = 'a'; letter[1] = 'b'; letter[2] = 'c'; letter[3] = 'e'; letter[4] = 'f'; letter[5] = 'p'; letter[6] = 'u'; letter[7] = 'z'; System.out.print("原字符序列:"); Arrays.sort(letter); for (int i = 0; i < letter.length; i++) { System.out.print(letter[i] + " "); } System.out.println(""); Scanner input = new Scanner(System.in); System.out.print("待输入的字符是:"); char str = input.next().charAt(0); int index = 0; for (int i = 0; i < letter.length; i++) { if (letter[i] > str) { System.out.println("插入字符的下标是:" + i); index = i; break; } } char[] clone = new char[letter.length+1]; for(int j=0;j<=letter.length;j++){ if(j<index){ clone[j] = letter[j]; }else if(j==index){ clone[j]=str; }else{ clone[j] = letter[j-1]; } } /*letter[index] = str; for (int i = letter.length - 1; str < letter[i]; i--) { System.out.println("letter[i]="+letter[i]+";letter[i-1]:"+letter[i-1]); letter[i] = letter[i - 1]; }*/ System.out.print("插入后的字符序列是:"); for (int k = 0; k < clone.length; k++) { System.out.print(clone[k]+ " "); } } }
j_boss2222 2017-09-18
  • 打赏
  • 举报
回复
你插入完了,排下序不就行了吗,从小到大
zmy244 2017-09-18
  • 打赏
  • 举报
回复
求大神帮忙解决下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧