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

现在增加一首新歌,将它插入数组,并保持歌曲名称升序排练,程序运行结果如图:我的SUN怎么不见了。... 现在增加一首新歌,将它插入数组,并保持歌曲名称升序排练,程序运行结果如图:我的SUN怎么不见了。 展开
 我来答
紫薇参星
科技发烧友

2017-03-10 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3595万
展开全部

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式