一、运行结果:
二、实现思路:
1、存放歌曲列表增删操作比较多,适合用LinkedList 集合
2、添加歌曲方法 addMusicList (LinkedList list)
3、不知道会输入多少次 操作序号,用 while(true) 死循环
4、添加歌曲的方法 addMusic(String musicName)
5、判断某元素在集合中是否存在 indexOf()
6、键盘输入
Scanner scanner = new Scanner(System.in);
int chooseNum = scanner.nextInt();
String musicName = new Scanner(System.in).nextLine();
三、实现代码:
package cn.itcast.task01;
import java.util.LinkedList;
import java.util.Scanner;
/**
* @author wangyue
* @version 1.0
* @date 2019/6/25 10:05
* @describe: 使用LinkedList 实现KTV点歌系统
*/
public class KTVByLinkedList {
public static void main(String[] args) {
welcomeUser(); //打印开头的简介
LinkedList list = new LinkedList();//创建用来存储歌曲列表的集合
addMusicList(list);
while (true) {
System.out.println();
System.out.print("请输入要执行的操作:");
Scanner scanner = new Scanner(System.in);
int chooseNum = scanner.nextInt();
switch (chooseNum) {
case 0://添加歌曲至列表
addMusic(list);
break;
case 1://将歌曲置顶
setTop(list);
break;
case 2://将歌曲前移一位
setBefore(list);
break;
case 3://退出
exit();
break;
default://不合法的输入
System.out.println("您的输入不合法,请按照说明输入!");
break;
}
}
}
//开始的欢迎语句
private static void welcomeUser() {
System.out.println("-------------欢迎来到点歌系统-------------");
System.out.println("0.添加歌曲到列表");
System.out.println("1.将歌曲置顶");
System.out.println("2.将歌曲前移一位");
System.out.println("3.推出");
}
//初始化歌曲列表
private static void addMusicList(LinkedList list) {
list.add("C++");
list.add("JAVA");
list.add("Go");
System.out.println("初始化歌曲列表" + list);
}
//添加歌曲至列表
private static void addMusic(LinkedList list) {
System.out.print("请输入要添加的歌曲:");
String musicName = new Scanner(System.in).nextLine();
list.add(musicName);
System.out.println("已添加歌曲:" + musicName);
System.out.println("当前歌曲列表" + list);
}
//将歌曲置顶
private static void setTop(LinkedList list) {
System.out.print("请输入置顶歌曲:");
String musicName = new Scanner(System.in).nextLine();
int position = list.indexOf(musicName);
if (position < 0) {
System.out.println("不存在该歌曲,请重新输入");
} else {
list.remove(musicName);
list.addFirst(musicName);
System.out.println("已将歌曲《" + musicName + "》置顶");
System.out.println("当前歌曲列表:" + list);
}
}
//将歌曲前移一位
private static void setBefore(LinkedList list) {
System.out.print("请输入前移歌曲:");
String musicName = new Scanner(System.in).nextLine();
int position = list.indexOf(musicName);
if (position < 0) {
System.out.println("不存在该歌曲,请重新输入");
} else if (position == 0) {
System.out.println("已位于首位,不需要前移");
} else {
list.remove(musicName);
list.add(position - 1, musicName);
System.out.println("已将歌曲《" + musicName + "》前移一位");
System.out.println("当前歌曲列表:" + list);
}
}
//退出
private static void exit() {
System.out.println("--------------- 退出 -----------------");
System.out.println("您已退出该系统");
System.exit(0);//结束正在运行的java程序
}
}