目录
模拟KTV点歌系统
任务描述
运行结果
任务目标
实现思路
实现代码
模拟KTV点歌系统
任务描述
分别使用LinkedList和ArrayList集合,实现编写一个模拟KTV点歌系统的程序。在程序中,指令0代表添加歌曲,指令1代表将所选歌曲置顶,指令代表将所选歌曲提前一位,指令3代表退出该系统。要求根据用户输入的指令和歌曲名展现歌曲列表。
运行结果
任务目标
-
学会分析"模拟KTV点歌系统"程序设计的实现思路。
-
根据思路独立完成"模拟KTV点歌系统"程序设计的源代码编写,编译和运行。
-
掌握ArrayList集合和LinkedList集合中方法的使用。
实现思路
①为了指引用户操作,首先要将各个指令所表示的含义打印到控制台。
②程序中需要创建一个集合作为歌曲列表,并且向其添加一部分歌曲。
③由于控制台需要实时等待用户输入命令,所以可以使用while(true)来使程序一直处于等待用户输入指令的状态。
④可以通过Scanner类的nextInt()方法来接收控制台的信息。
⑤可以使用switch语句,根据控制台传入的指令,判断应该执行的操作。
⑥通过LinkedList集合或ArrayList集合定义的方法操作歌曲列表。
实现代码
(1),使用LinkedList集合模拟点歌系统的实现代码
- package 集合类;
- import java.util.LinkedList;
- import java.util.Scanner;
- public class KTVByLinkedList {
- public static void main(String[] args) {
- System.out.println("-----欢迎来到点歌系统-------");
- System.out.println("0.添加歌曲至列表");
- System.out.println("1.将歌曲置顶");
- System.out.println("2.将歌曲前移一位");
- System.out.println("3.退出");
- //创建歌曲列表
- LinkedList lineUpList=new LinkedList();
- //添加一部分歌曲到歌曲列表
- addMusicList(lineUpList);
- while(true){
- System.out.println("请输入要执行的操作序号");
- //接收键盘输入的功能选项序号
- Scanner scan=new Scanner(System.in);
- int command=scan.nextInt();
- //执行序号对应的功能
- switch (command){
- case 0://添加歌曲到列表
- addMusic(lineUpList);
- break;
- case 1://将歌曲置顶
- setTop(lineUpList);
- break;
- case 2://将歌曲前移一位
- setBefore(lineUpList);
- break;
- case 3://退出
- exit();
- break;
- default:
- System.out.println("---------------");
- System.out.println("功能选择错误,请输入正确的功能序号!");
- }
- System.out.println("当前歌曲列表: "+lineUpList);
- }
- }
- //初始时添加歌曲名称
- private static void addMusicList(LinkedList lineUpList){
- lineUpList.add("稻香");
- lineUpList.add("夜曲");
- lineUpList.add("夜上海");
- lineUpList.add("好运来");
- System.out.println("初始歌曲列表"+lineUpList);
- }
- //执行添加歌曲
- private static void addMusic(LinkedList lineUpList){
- System.out.print("请输入要添加的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- //添加歌曲到列表的最后
- lineUpList.addLast(musicName);
- System.out.println("已添加歌曲:"+musicName);
- }
- //执行将歌曲置顶
- private static void setTop(LinkedList lineUpList){
- System.out.print("请输入要置顶的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- //查找指定歌曲的位置
- int position=lineUpList.indexOf(musicName);
- //判断输入的歌曲是否存在
- if(position<0){
- System.out.println("当前列表没有输入的歌曲!");
- }else{
- //移除指定的歌曲
- lineUpList.remove(musicName);
- //将指定的歌曲放到第一位
- lineUpList.addFirst(musicName);
- }
- System.out.println("已将歌曲"+musicName+"置顶");
- }
- //执行将歌曲置前一位
- private static void setBefore(LinkedList lineUpList){
- System.out.print("请输入要置前的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- //查找指定歌曲的位置
- int position=lineUpList.indexOf(musicName);
- if(position<0){
- System.out.println("当前列表中没有输入的歌曲!");
- //判断歌曲是否已在第一位
- }else if (position==0){
- System.out.println("当前歌曲已在最底部");
- }else{
- //移除指定的歌曲
- lineUpList.remove(musicName);
- //将指定的歌曲放到前一位
- lineUpList.add(position-1,musicName);
- }
- System.out.println("已将歌曲"+musicName+"置在第一位");
- }
- //退出
- private static void exit(){
- System.out.println("-----------退出---------------");
- System.out.println("你已退出系统");
- System.exit(0);
- }
- }
(2),使用ArrayList集合模拟点歌系统的代码实现
- package 集合类;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.Scanner;
- public class KTVByArrayList {
- public static void main(String[] args) {
- System.out.println("-----欢迎来到点歌系统-------");
- System.out.println("0.添加歌曲至列表");
- System.out.println("1.将歌曲置顶");
- System.out.println("2.将歌曲前移一位");
- System.out.println("3.退出");
- //创建歌曲列表
- ArrayList lineUpList = new ArrayList();
- //添加一部分歌曲至歌曲列表
- addMusicList(lineUpList);
- while(true){
- System.out.println("请输入要执行的操作序号");
- Scanner scan=new Scanner(System.in);
- int command=scan.nextInt();
- switch (command){
- case 0://添加歌曲
- addMusic(lineUpList);
- break;
- case 1://将歌曲置顶
- setTop(lineUpList);
- break;
- case 2://将歌曲前移一位
- setBefore(lineUpList);
- break;
- case 3://退出
- exit();
- break;
- default:
- System.out.println("---------------");
- System.out.println("功能选择错误,请输入正确的功能序号!");
- }
- System.out.println("当前歌曲列表: "+lineUpList);
- }
- }
- //添加歌曲名称
- private static void addMusicList(ArrayList lineUpList){
- lineUpList.add("稻香");
- lineUpList.add("夜曲");
- lineUpList.add("夜上海");
- lineUpList.add("好运来");
- System.out.println("初始歌曲列表"+lineUpList);
- }
- //执行添加歌曲
- private static void addMusic(ArrayList lineUpList){
- System.out.print("请输入要添加的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- lineUpList.add(musicName);//添加歌曲到列表最后
- System.out.println("已添加歌曲:"+musicName);
- }
- //执行将歌曲置顶
- private static void setTop(ArrayList lineUpList){
- System.out.print("请输入要置顶的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- //查找指定歌曲位置
- int position=lineUpList.indexOf(musicName);
- //判断歌曲是否存在
- if(position<0){
- System.out.println("当前列表没有输入的歌曲!");
- }else{
- //移除指定歌曲
- lineUpList.remove(musicName);
- //将指定歌曲放到第一位
- lineUpList.add(0,musicName);
- }
- System.out.println("已将歌曲"+musicName+"置顶");
- }
- //执行将歌曲前置一位
- private static void setBefore(ArrayList lineUpList){
- System.out.print("请输入要置前的歌曲名称: ");
- String musicName=new Scanner(System.in).nextLine();
- int position=lineUpList.indexOf(musicName);
- if(position<0){
- System.out.println("当前列表中没有输入的歌曲!");
- }else if (position==0){
- System.out.println("当前歌曲已在最底部");
-
- }else{
- lineUpList.remove(musicName);
- lineUpList.add(position-1,musicName);
- }
- System.out.println("已将歌曲"+musicName+"置在第一位");
- }
- private static void exit(){
- System.out.println("-----------退出---------------");
- System.out.println("你已退出系统");
- System.exit(0);
- }
- }
⛵总结
通过这个小项目,可以掌握ArrayList集合和LinkedList集合中方法的使用,同时ArrayList集合和LinkedList集合的不同是进大厂面试经常涉及到的内容,
如果这篇【文章】有帮助到你,希望可以点个赞👍,创作不易,如果有对【Java基础】【后端技术】、【数据结构】【Linux操作系统】感兴趣的小可爱,也欢迎关注 【LNORA】,对【算法设计与分析】感兴趣的可以免费订阅【算法设计与分析】的专栏,如果我的文章有帮助到你,麻烦来个一键三连奥,这将是对我莫大的鼓励,我将为大家带来更加优质的文章!我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝!