我这里判断ID不能相等的语句,怎么循环执行

我这里判断ID不能相等的语句,怎么循环执行

  System.out.println("请输入第"+(i+1)+"首歌曲:");
    System.out.println("请输入歌曲id:");
    String id=in.next();
    for(Song song:mainList)
    {
     if (id.equals(song.getId()))
     {
     System.out.println("歌曲id不能重复添加,请重新输入");
     break;
     }

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 liqihang 2018-03-30 17:05:11

package com.imooc.playerDemo;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class PlayList {
  private String playListName;
  private List musicList;
  public PlayList(){
  
  }
public PlayList(String playListName, List musicList) {
 super();
 this.playListName = playListName;
 this.musicList = musicList;
}
Scanner in=new Scanner(System.in);
public String getPlayListName() {
 return playListName;
}
public void setPlayListName(String playListName) {
 this.playListName = playListName;
}
public List getMusicList() {
 return musicList;
}
public void setMusicList(List musicList) {
 this.musicList = musicList;
}
  public void addToPlayList(){
   System.out.println("请输入要添加的歌曲的数量");
  
   int n=in.nextInt();
   for(int i=0;i<n;i++)
   { 
  
    System.out.println("请输入第"+(i+1)+"首歌曲:");
    System.out.println("请输入歌曲id:");
    String id=in.next();
    System.out.println("请输入歌曲名称:");
    String name=in.next();
    System.out.println("请输入演唱者");
    String singer=in.next();
    Song song=new Song(id,name,singer);
    this.musicList.add(song);
    System.out.println("歌曲添加成功");
   }
  }
  public void addToPlayGeneralList(){//给普通播放列表添加歌曲
   System.out.println("请输入要添加的歌曲的数量");
   Scanner in=new Scanner(System.in);
   int n=in.nextInt();
   for(int i=0;i<n;i++)
   { 
    System.out.println("请输入第"+(i+1)+"首歌曲:");
    System.out.println("请输入歌曲id:");
    String id=in.next();
    System.out.println("请输入歌曲名称:");
    String name=in.next();
    System.out.println("请输入演唱者");
    String singer=in.next();
    Song song=new Song(id,name,singer);
    this.musicList.add(song);
    System.out.println("添加歌曲成功!");
   }
  }
  public void displayAllSong(){
   for(Song song:this.getMusicList())
    System.out.println(song);
//   for(int i=0;i<this.getMusicList().size();i++)
//    System.out.println(this.getMusicList().get(i));
  }
  public Song searchSongById(String id){
   for(int i=0;i<this.getMusicList().size();i++)
   {
    if((this.getMusicList().get(i))
     System.out.println(this.getMusicList().get(i));
   }
  }
  public Song searchSongByName(String name){
   for(Song song:musicList)
   {
    if(name.equals(song.getName()))
     System.out.println(song);
   }
  }
  public void updateSong(Song song){//修改信息,歌曲ID不变,只改变歌曲名称和演唱者
  
  }
  public void deleteSong(String id){
  
  }
  public void exportPlayList(){//导出歌单
  
  }
}

显示所有歌曲的时候我想用for-each循环,结果报错

  • musicList不是泛型集合,所以不能直接用for...each套用Song类型进行遍历
    2018-03-30 17:53:13
提问者 liqihang 2018-03-30 17:03:39
一叶知秋519 2018-03-30 15:52:27

你的这个判断看起来没有问题呀。你可以再增加一个flag,初始值设为false,如果歌曲id重复了,在if判断内将flag设为true,循环外,根据flag的值决定是否可以添加歌曲。

祝学习愉快!

  • 提问者 liqihang #1
    public void displayAllSong(){ for(Song song:this.getMusicList()) System.out.println(song);老师我这里for循环里哪里写错了,程序报错
    2018-03-30 16:03:30
  • 一叶知秋519 回复 提问者 liqihang #2
    你把报错信息和相关代码都贴一下。
    2018-03-30 16:41:21
  • 提问者 liqihang 回复 一叶知秋519 #3
    在上边贴出
    2018-03-30 17:05:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师