版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34195441/article/details/86023492
1、Music_1类
package com.hpu.music;
/**
* 歌名、歌手名、播放时长
* @author Administrator
*
*/
public class Music_1 {
private String songName;
private String singerName;
private int songTime;
public Music_1(String songName, String singerName, int songTime) {
super();
this.songName = songName;
this.singerName = singerName;
this.songTime = songTime;
}
public String getSongName() {
return songName;
}
public void setSongName(String songName) {
this.songName = songName;
}
public String getSingerName() {
return singerName;
}
public void setSingerName(String singerName) {
this.singerName = singerName;
}
public int getSongTime() {
return songTime;
}
public void setSongTime(int songTime) {
this.songTime = songTime;
}
/**
*播放
*/
public void play(){
System.out.println(singerName+"在演唱"+songName+",歌曲时长为"+songTime);
}
//重写toString方法,不然只能输出地址
@Override
public String toString() {
return "Music_1 [songName=" + songName + ", singerName=" + singerName + ", songTime=" + songTime+"]";
}
}
2、测试类
package com.hpu.music;
import java.util.ArrayList;
import java.util.Scanner;
/**
* 输入1、展示歌曲列表
* 输入2、添加歌曲
* 输入3、删除歌曲
* 输入4、查询歌曲
*符串比较: == :比较的是地址 equals;比较的是值
*静态方法内部不能引用非静态的变量
*静态方法是类级别的,不需要实例化对象就可以调用,静态的代码会优先初始化,而且只会初始化一次
* @author Administrator
*
*/
public class TestArrayList {
//把获取输入设置为全局的,方便用
static Scanner input=new Scanner(System.in);
public static void main(String[] args) {
//添加三个Music_1对象变量
ArrayList<Music_1> list=new ArrayList<>();
list.add(new Music_1("七里香","周杰伦",230));
list.add(new Music_1("给我一首歌的时间","周杰伦",240));
list.add(new Music_1("夜曲","周杰伦",230));
while(true){
System.out.println("输入1、展示歌曲列表 2、添加歌曲 3、删除歌曲 输入4、查询歌曲");
int num=input.nextInt();
switch(num){
case 1:
showMusic(list);
break;
case 2:
addMusic(list);
break;
case 3:
deleteMusic(list);
break;
case 4:
selectMusic(list);
break;
}
}
}
//展示歌曲列表
private static void showMusic(ArrayList<Music_1> list) {
// TODO Auto-generated method stub
for(Music_1 a:list){
System.out.println(a);
}
}
//添加歌曲
private static void addMusic(ArrayList<Music_1> list) {
// TODO Auto-generated method stub
System.out.println("请输入您想添加的歌曲名称");
String songName=input.next();
System.out.println("请输入您想添加的歌手姓名");
String singerName=input.next();
System.out.println("请输入您想添加的歌曲时长");
int songTime=input.nextInt();
//将Music_1对象添加到集合中
list.add(new Music_1(songName,singerName,songTime));
}
//根据歌曲名称删除歌曲
private static void deleteMusic(ArrayList<Music_1> list) {
// TODO Auto-generated method stub
System.out.println("请输入您想删除的歌曲名称");
String songName=input.next();
/**ConcurrentModificationException:foreach删除之后,不能再对集合做遍历,否则会报错
* foreach一般只做查询,不做修改
* for(Music_1 a:list){
//歌曲名称的比对
if(a.getSongName().equals(songName)){
list.remove(a);
break;
}
}
*/
for(int i=0;i<list.size();i++){
if(songName.equals(list.get(i).getSongName())){
list.remove(i);//删除歌曲
}
}
}
//根据歌曲名称查询歌曲
private static void selectMusic(ArrayList<Music_1> list) {
// TODO Auto-generated method stub
System.out.println("输入您想要查询的歌曲名称:");
String songName=input.next();
for(Music_1 a:list){
if(a.getSongName().equals(songName)){
a.play();
}else{
System.out.println("您所查询的歌曲不存在");
break;
}
}
}
/**
* //默认添加3个person对象
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("张爱岗", 23));
list.add(new Person("李诚实", 34));
list.add(new Person("王建国", 18));
//用户输入person的姓名,找出对应的person,并调用eat方法
Scanner input = new Scanner(System.in);
System.out.println("请输入person的名称");
//获取输入的用户名称
String inputUserName = input.next();
//定义标识性变量
boolean flag = true;
//遍历集合,根据输入找出对应的person对象
for(int i=0;i<list.size();i++){
//获取每一个对象
Person person = list.get(i);
//比较输入和person的username
// 字符串比较: == :比较的是地址 equals;比较的是值
if(inputUserName.equals(person.getUserName())){
person.eat();
flag = false;
}
}
if(flag){
System.out.println("该用户不存在");
}
}
*/
}