java:请使用ArrayList或者LinkedList集合,实现编写一个模拟KTV点歌系统的程序。在程序中指定0代表添加歌曲,指令1代表将选择的歌曲指置顶,指令2代表将所选的歌曲提前一位,指定3代表退出该系统。
时间: 2024-11-04 19:13:29 浏览: 7
在Java中,我们可以创建一个简单的KTV点歌系统,使用`ArrayList`或`LinkedList`作为歌曲列表。这里以`ArrayList`为例,因为它支持高效的随机访问,适合频繁的插入和删除操作。假设我们有一个Song类表示歌曲,包含歌曲ID和名称。
```java
import java.util.ArrayList;
import java.util.List;
class Song {
int id;
String name;
// 构造函数、getter和setter省略
}
public class KTVPointingSystem {
private List<Song> songList = new ArrayList<>();
public void start() {
while (true) {
System.out.println("请输入操作编号:");
int input = scanner.nextInt();
switch (input) {
case 0:
System.out.println("请输入新歌ID和名称(例如:1 'My Song'):");
int newSongId = scanner.nextInt();
String newName = scanner.next();
addSong(newSongId, newName);
break;
case 1:
System.out.println("请选择需要置顶的歌曲ID:");
int toppingSongId = scanner.nextInt();
topSong(toppingSongId);
break;
case 2:
System.out.println("请选择需要提前的歌曲ID:");
int shiftSongId = scanner.nextInt();
shiftSong(shiftSongId);
break;
case 3:
System.out.println("感谢使用! 您已退出系统.");
return;
default:
System.out.println("无效的操作,请重新输入.");
}
}
}
private void addSong(int id, String name) {
Song newSong = new Song();
newSong.id = id;
newSong.name = name;
songList.add(newSong);
}
private void topSong(int songId) {
if (songList.contains(songId)) {
songList.remove(songId);
songList.add(0, new Song(id:songId, name:"(Top)");
} else {
System.out.println("找不到这首歌.");
}
}
private void shiftSong(int songId) {
if (songList.contains(songId)) {
int index = songList.indexOf(songId);
if (index > 0) {
songList.remove(songId);
songList.add(index - 1, new Song(id:songId, name:"[Shifted]"));
} else {
System.out.println("这首歌已在最前面,无法提前.");
}
} else {
System.out.println("找不到这首歌.");
}
}
}
```
在这个例子中,用户通过输入数字选择操作,然后程序根据输入执行相应的功能。`start()`方法是主循环,直到用户选择退出为止。
阅读全文