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.退出");
System.out.println("4.删除");
LinkedList lineUpList = new LinkedList();
addMusicList(lineUpList);
while(true) {
System.out.print("请输入要执行的操作序号:");
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;
case 4:
deleteMusic(lineUpList);
break;
default:
System.out.println("--------------------------------------");
System.out.println("功能选择有误,请输入正确的功能序号!");
break;
}
System.out.println("当前歌曲列表:"+ lineUpList);
}
}
private static void addMusicList(LinkedList lineUpList) {
lineUpList.add("稻香");
lineUpList.add("夜曲");
lineUpList.add("夜的第七章");
lineUpList.add("听妈妈的话");
lineUpList.add("龙卷风");
lineUpList.add("初始歌曲列表:" + 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 deleteMusic(LinkedList lineUpList) {
System.out.print("请输入要删除的歌曲名称:");
String musicName = new Scanner(System.in).nextLine();
lineUpList.remove();
System.out.println("已删除歌曲:"+ musicName);
}
private static void exit() {
System.out.println("----------------退出-------------------");
System.out.println("您已退出系统");
System.exit(0);
}
}

Java-KTVByLinkedList模拟点歌工具的更多相关文章

  1. Rhino+envjs-1.2.js 在java运行网站js 工具类

    java爬虫遇到个页面加密的东西,找了些资料学习学习 做了个java运行js的工具类,希望对大家有用,其中用到client(获取js)可以自行换成自己的client.主要是用了 Rhino就是Java ...

  2. Java实现模拟登录新浪微博

    毕设题目要使用到新浪微博数据,所以要爬取新浪微博的数据.一般而言,新浪微博的爬虫有两种模式:新浪官方API和模拟登录新浪微博.两种方法的异同点和适用情况就无须赘述了.前辈的文章已经非常多了.写这篇文章 ...

  3. Java线程的并发工具类

    Java线程的并发工具类. 一.fork/join 1. Fork-Join原理 在必要的情况下,将一个大任务,拆分(fork)成若干个小任务,然后再将一个个小任务的结果进行汇总(join). 适用场 ...

  4. 推荐6款常用的Java开源报表制作工具

    JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表.JasperReports 支持PDF.HTML.XLS.CSV和XML文件输出格 ...

  5. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

  6. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  7. http模拟请求工具

    http模拟请求工具: postman(chrome应用) Request Maker(chrome插件) Request Maker(网站:http://www.requestmaker.com/) ...

  8. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  9. Java学习-041-颜色工具类(RGB,HEX)

    在日常的网页开发中,经常需要进行颜色数值获取.转换,例如获取红色,获取蓝色,获取绿色,RGB转十六进制颜色,十六进制颜色转RGB等,因而在学习过程中,写了一个小工具类,仅供各位小主参考! 多不闲言,直 ...

随机推荐

  1. App《最美诗词》开发 -- Java后端(整合框架)

    本人一直是致力于Android开发,由于我们三位Android开发者 @老蔡 @不肯过江东 打算一起开发Android App<最美诗词>,需要服务器端的接口支持,所以便兼职做起了后端的代 ...

  2. Java 类类型之 String 类型

    类类型 引用数据类型存的都是地址,通过地址指向对象: 基本数据类型存的都是具体值: 字符串 (String) 类型 特点: 1.字符创都是对象: 2.一旦初始化,不能被更改,字符串缓冲区支持可变的字符 ...

  3. .html文件转换成.txt

    @ 思路 @-@ 简要 根据尖括号将文件分隔成字符串,建立一套判断字符串是否为标签的标准,若不为标签则为文本内容,存入结果文件中:   @-@ 详述 0. 建立两个哈希表: 哈希表1 unordere ...

  4. Blockchain

    一.中心化 中心化原则是我们日常比较常见的支付手段. 科普文章喜欢用网购举例: 1.你在某宝支付了一件商品,钱先到马云爸爸手中,通知商家发货: 2.商家发货,你收货后确认无误,点击确认收货: 3.马云 ...

  5. 数学--数论--HDU2136 Largest prime factor 线性筛法变形

    Problem Description Everybody knows any number can be combined by the prime number. Now, your task i ...

  6. 在Jetson TX2上显示摄像头视频并使用python进行caffe推理

    参考文章:How to Capture Camera Video and Do Caffe Inferencing with Python on Jetson TX2 与参考文章大部分都是相似的,如果 ...

  7. Jmeter 后置处理器

    1.JSON Extractor Json extractor 后置处理器用在返回格式为 Json 的 HTTP 请求中,用来获取返回的 Json 中的某个值.并保存成变量供后面的请求进行调用或断言等 ...

  8. search(9)- elastic4s logback-appender

    前面写了个cassandra-appender,一个基于cassandra的logback插件.正是cassandra的分布式数据库属性才合适作为akka-cluster-sharding分布式应用的 ...

  9. 用Visual Studio2019自定义项目模板

    项目模板简介 众所周知,在我们使用VS新建项目时,都需要选择一个项目模板,如下图: 我们选择完项目模板进行创建,创建完成之后,可以发现项目中已经包含了一些基础的文件.例如MVC: 可以看到,MVC项目 ...

  10. 【HBase】快速了解上手rowKey的设计技巧

    目录 为什么要设计rowKey 三大原则 长度原则 散列原则 唯一原则 热点问题的解决 加盐 哈希 反转 时间戳反转 为什么要设计rowKey 首先要弄明白一点,Regions的分区就是根据数据的ro ...