输入五个歌曲名,按首字母进行依次升幂排序
输入数字1 表示插入一首歌曲名
输入数字2可以表示删除一首歌曲名
输入数字0 退出
一个数组有序,添加一个元素后,数组依然有序。
一个数组有序,删除一个元素后,数组依然有序。
程序如下
import java.util.Scanner; public class test03{ //申请一个整型类变量 static int number=6; //申请一个类引用变量 static String[] music =new String[number]; //申请一个字符串用变量 static String M="000"; //插入一个字符串方法 public static String[] index_add(String [] MUSIC_0){ //记录一个位置变量 如果是负数这表示遍历完没有相应的位置放到最后 int al=-1; // 如果是正数表示有相应位置要插入 Scanner sc1 = new Scanner(System.in); M = sc1.next(); //申请一个插入字符串用变量 System.out.println(number); //申请字符串数组 number+1表示需要多申请一个字符串存放增加的变量 String[] M_new = new String[number+1]; //把之前歌名复制到新字符串数组 for(int i =0;i<number;i++){ M_new[i]=MUSIC_0[i]; } //遍历歌名的首字符需要插入位置 for(int i=0;i<number;i++){ if(M.charAt(0)<=MUSIC_0[i].charAt(0)){ al=i; break; } } //如果是负数这表示遍历完没有相应插入的位置,放到最后 if(al<0){ M_new[number]=M; for(String i:M_new) { System.out.print(i+' '); } }else{ // 如果是正数表示有相应位置要插入 for(int f=number;f>al;f-- ){ M_new[f]=M_new[f-1]; // 依次后移 } M_new[al]=M;//插入 for(String i:M_new) { System.out.print(i+' '); } System.out.println(); } number++; //数组增加一位 return M_new;//返回值 } //删除一个字符串方法 public static String[] index_delete(String[] a){ //记录删除的位置 int al=-1; Scanner sc1 = new Scanner(System.in); M = sc1.next(); //遍历歌名的首字符需要删除位置 for(int f=0;f<number;f++){ if(a[f].charAt(0)==M.charAt(0)) { al=f; break; } } //申请字符串数组 --number表示需要多申请一个字符串存放增加的变量 String[] M_new = new String[--number]; if(al<0){// System.out.println("找不到相应歌曲"+' '); } else{ int j=0; //删除一位字符串,重新复制到新的数组 for(int f=0;f<number;f++){ if(f==al) { j++;//删除位置 多加加一表示跳过复制 } M_new[f]=a[j++]; } for(String i:M_new) { System.out.print(i+' '); } System.out.println("删除成功"); } return M_new; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); for(int i=0;i<music.length;i++){ System.out.println("请输入第"+i+"歌曲名称"); music[i] = sc.next(); } String a; //每个字符串的首字母进行排序 冒泡排序 for(int j=0;j<music.length-1;j++){ for(int i=0; i<music.length-j-1;i++){ if(music[i].charAt(0)>music[i+1].charAt(0)){ a = music[i+1]; music[i+1]=music[i]; music[i]=a; } } } System.out.print(' '); for(String i:music){ System.out.print(i+' '); } System.out.print(' '); byte w=0; byte over=1; for(int i=0;i<6;){ System.out.print("输入1数字增加一首歌曲名"+' '); System.out.print("输入2数字删除一首歌曲名"+' '); System.out.print("输入0退出"+' '); System.out.print(' '); w = sc.nextByte(); switch(w){ //输入1表示增加一首歌曲 case 1: System.out.println("请输入歌曲名"+' '); music=index_add(music);//music 引用方法返回的数组地址 break; case 2: //输入2数字删除一首歌曲名 System.out.println("请输入歌曲名"+' '); music=index_delete(music);//music 引用方法返回的数组地址 break; case 0: System.out.println("再次输入0结束操作"); over=sc.nextByte(); //真正的退出 break; } if(over==0){ break; } } } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.Scanner; 2 3 public class test03{ 4 //申请一个整型类变量 5 static int number=6; 6 //申请一个类引用变量 7 static String[] music =new String[number]; 8 //申请一个字符串用变量 9 static String M="000"; 10 11 //插入一个字符串方法 12 public static String[] index_add(String [] MUSIC_0){ 13 //记录一个位置变量 如果是负数这表示遍历完没有相应的位置放到最后 14 int al=-1; // 如果是正数表示有相应位置要插入 15 Scanner sc1 = new Scanner(System.in); 16 M = sc1.next(); 17 //申请一个插入字符串用变量 18 System.out.println(number); 19 //申请字符串数组 number+1表示需要多申请一个字符串存放增加的变量 20 String[] M_new = new String[number+1]; 21 22 //把之前歌名复制到新字符串数组 23 for(int i =0;i<number;i++){ 24 M_new[i]=MUSIC_0[i]; 25 } 26 //遍历歌名的首字符需要插入位置 27 for(int i=0;i<number;i++){ 28 if(M.charAt(0)<=MUSIC_0[i].charAt(0)){ 29 al=i; 30 break; 31 } 32 } 33 //如果是负数这表示遍历完没有相应插入的位置,放到最后 34 if(al<0){ 35 M_new[number]=M; 36 for(String i:M_new) 37 { 38 System.out.print(i+' '); 39 } 40 }else{ // 如果是正数表示有相应位置要插入 41 for(int f=number;f>al;f-- ){ 42 M_new[f]=M_new[f-1]; // 依次后移 43 } 44 M_new[al]=M;//插入 45 for(String i:M_new) 46 { 47 System.out.print(i+' '); 48 } 49 50 System.out.println(); 51 } 52 number++; //数组增加一位 53 return M_new;//返回值 54 } 55 56 //删除一个字符串方法 57 public static String[] index_delete(String[] a){ 58 //记录删除的位置 59 int al=-1; 60 61 Scanner sc1 = new Scanner(System.in); 62 M = sc1.next(); 63 //遍历歌名的首字符需要删除位置 64 for(int f=0;f<number;f++){ 65 if(a[f].charAt(0)==M.charAt(0)) 66 { 67 al=f; 68 break; 69 } 70 } 71 //申请字符串数组 --number表示需要多申请一个字符串存放增加的变量 72 String[] M_new = new String[--number]; 73 if(al<0){// 74 System.out.println("找不到相应歌曲"+' '); 75 } 76 else{ 77 78 int j=0; 79 //删除一位字符串,重新复制到新的数组 80 for(int f=0;f<number;f++){ 81 82 if(f==al) 83 { 84 j++;//删除位置 多加加一表示跳过复制 85 } 86 M_new[f]=a[j++]; 87 88 } 89 90 for(String i:M_new) 91 { 92 System.out.print(i+' '); 93 } 94 System.out.println("删除成功"); 95 } 96 97 return M_new; 98 99 } 100 public static void main(String[] args){ 101 Scanner sc = new Scanner(System.in); 102 103 104 for(int i=0;i<music.length;i++){ 105 System.out.println("请输入第"+i+"歌曲名称"); 106 music[i] = sc.next(); 107 } 108 String a; 109 //每个字符串的首字母进行排序 冒泡排序 110 for(int j=0;j<music.length-1;j++){ 111 for(int i=0; i<music.length-j-1;i++){ 112 if(music[i].charAt(0)>music[i+1].charAt(0)){ 113 a = music[i+1]; 114 music[i+1]=music[i]; 115 music[i]=a; 116 } 117 } 118 119 } 120 System.out.print(' '); 121 for(String i:music){ 122 System.out.print(i+' '); 123 } 124 System.out.print(' '); 125 byte w=0; 126 byte over=1; 127 for(int i=0;i<6;){ 128 129 System.out.print("输入1数字增加一首歌曲名"+' '); 130 System.out.print("输入2数字删除一首歌曲名"+' '); 131 System.out.print("输入0退出"+' '); 132 System.out.print(' '); 133 w = sc.nextByte(); 134 switch(w){ //输入1表示增加一首歌曲 135 case 1: 136 System.out.println("请输入歌曲名"+' '); 137 music=index_add(music);//music 引用方法返回的数组地址 138 break; 139 case 2: //输入2数字删除一首歌曲名 140 System.out.println("请输入歌曲名"+' '); 141 142 music=index_delete(music);//music 引用方法返回的数组地址 143 break; 144 case 0: 145 System.out.println("再次输入0结束操作"); 146 over=sc.nextByte(); //真正的退出 147 break; 148 } 149 150 if(over==0){ 151 break; 152 } 153 } 154 } 155 }