Java代码分别使用 LinkedList 和ArrayList集合,实现编写一个模拟KTV点歌系统的程序。在程序中,指令0代表添加歌曲,指令1代表将所选歌置顶,指令2代表将所选歌曲提前一位,指令3代表退出该系统。要求根据用户输入的指令和歌曲名展现歌曲列表。例如输入指令0,输入歌曲名“夜曲”,则输出“当前歌曲列表:[夜曲]”。
时间: 2024-03-03 13:49:32 浏览: 99
下面是使用 LinkedList 和 ArrayList 集合实现的 KTV 点歌系统的 Java 代码:
```java
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Scanner;
public class KTVSystem {
public static void main(String[] args) {
LinkedList<String> songList1 = new LinkedList<>(); // 使用 LinkedList 集合实现
ArrayList<String> songList2 = new ArrayList<>(); // 使用 ArrayList 集合实现
Scanner sc = new Scanner(System.in);
songList1.add("稻香");
songList1.add("夜曲");
songList1.add("夜的第七章");
songList1.add("听妈妈的话");
songList1.add("龙卷风");
songList2.add("稻香");
songList2.add("夜曲");
songList2.add("夜的第七章");
songList2.add("听妈妈的话");
songList2.add("龙卷风");
while (true) {
System.out.println("请选择操作:0-添加歌曲;1-将歌曲置顶;2-将歌曲前移一位;3-退出");
int option = sc.nextInt();
if (option == 0) {
System.out.println("请输入要添加的歌曲名称:");
String song = sc.next();
songList1.add(song);
songList2.add(song);
System.out.println("已添加歌曲:" + song);
System.out.println("当前歌曲列表(LinkedList):" + songList1);
System.out.println("当前歌曲列表(ArrayList):" + songList2);
} else if (option == 1) {
System.out.println("请输入要置顶的歌曲名称:");
String song = sc.next();
if (songList1.remove(song)) {
songList1.addFirst(song);
System.out.println("已将歌曲" + song + "置顶(LinkedList)");
} else {
System.out.println("歌曲" + song + "不存在!");
}
if (songList2.remove(song)) {
songList2.add(0, song);
System.out.println("已将歌曲" + song + "置顶(ArrayList)");
} else {
System.out.println("歌曲" + song + "不存在!");
}
System.out.println("当前歌曲列表(LinkedList):" + songList1);
System.out.println("当前歌曲列表(ArrayList):" + songList2);
} else if (option == 2) {
System.out.println("请输入要置前的歌曲名称:");
String song = sc.next();
int index1 = songList1.indexOf(song);
int index2 = songList2.indexOf(song);
if (index1 != -1) {
songList1.remove(index1);
songList1.add(index1 - 1, song);
System.out.println("已将歌曲" + song + "置前一位(LinkedList)");
} else {
System.out.println("歌曲" + song + "不存在!");
}
if (index2 != -1) {
songList2.remove(index2);
songList2.add(index2 - 1, song);
System.out.println("已将歌曲" + song + "置前一位(ArrayList)");
} else {
System.out.println("歌曲" + song + "不存在!");
}
System.out.println("当前歌曲列表(LinkedList):" + songList1);
System.out.println("当前歌曲列表(ArrayList):" + songList2);
} else if (option == 3) {
System.out.println("已退出系统。");
break;
} else {
System.out.println("无效指令!");
}
}
}
}
```
注意,上述代码中的 LinkedList 和 ArrayList 集合都存储了相同的歌曲列表,因此添加、置顶和置前操作都同时在两个集合上进行,并在每次操作后都输出当前的歌曲列表,方便查看。
阅读全文