java,数组问题:有一组英文歌曲,按照歌曲名称的字母顺序从“A”到"Z"顺序排列,保存在一个数组中。

现在增加一首新歌,将它插入数组,并保持歌曲名称升序排练,程序运行结果如图:我的SUN怎么不见了。

你的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

温馨提示:答案为网友推荐,仅供参考
相似回答