java,数组问题:有一组英文歌曲,按照歌曲名称的字母顺序从“A”到"Z"顺序排列,保存在一个数组中。 20
现在增加一首新歌,将它插入数组,并保持歌曲名称升序排练,程序运行结果如图:我的SUN怎么不见了。...
现在增加一首新歌,将它插入数组,并保持歌曲名称升序排练,程序运行结果如图:我的SUN怎么不见了。
展开
1个回答
展开全部
你的Java程序的第一个for循环中的语句nummusics=musics;把musics数组的引用赋给了nummusics数组,实际上让数组nummusics和musics数组一样了,它们的大小也一样了,所以应该把nummusics=musics;改成数组元素赋值nummusics[i]=musics[i];
还有一点就是打印插入前的数组应该打印musics数组,而不是nummusics数组.
完整的Java程序如下(改动的地方见注释)
import java.util.Scanner;
public class taks4 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String[] musics=new String[]{"Island","Ocean","Pretty","Sun"};
String[] nummusics=new String[musics.length+1];
int index=0;
String music="";
System.out.print("插入前的数组:");
for(int i=0;i<musics.length;i++){
nummusics[i]=musics[i];//这里把nummusics=musics;改成nummusics[i]=musics[i];
}
for(int i=0;i<musics.length;i++){//这里把i<nummusics.length;改成i<musics.length;
System.out.print(musics[i]+" ");//这里把nummusics[i]+" "改成musics[i]+" "
}
System.out.println("");
System.out.print("请输入新的单词");
music=input.nextLine();
System.out.print("插入前新单词的下标:");
for(int i=0;i<nummusics.length;i++){
if(nummusics[i].compareToIgnoreCase(music)>0){
index=i;
break;
}
}
System.out.println(index);
for(int i=nummusics.length-1;i>index;i--){
nummusics[i]=nummusics[i-1];
}
nummusics[index]=music;
System.out.print("插入后的数组:");
for(int i=0;i<nummusics.length;i++){
System.out.print(nummusics[i]+" ");
}
}
}
运行结果
插入前的数组:Island Ocean Pretty Sun
请输入新的单词kk
插入前新单词的下标:1
插入后的数组:Island kk Ocean Pretty Sun
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询