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. uboot on qemu

    1, download uboot ftp://ftp.denx.de/pub/u-boot/ 2, compile uboot make vexpress_ca9x4_config export A ...

  2. HTML(css 样式)

    1.CSS 可以通过以下方式添加到 HTML 中: 内联样式 -- 在 HTML 元素中使用 "style" 属性 内部样式表 -- 在 HTML 文档头部 <head> ...

  3. postman(动态数据获取)

    一:返回报文为 json 格式 示例:因为充值记录接口中需要用到登录接口返回报文中的信息如下 1.以获取token(JWT)和uid为例 2.在登录接口的tests中写入代码(因为登录接口报文信息中有 ...

  4. 一只简单的网络爬虫(基于linux C/C++)————利用正则表达式解析页面

    我们向一个HTTP的服务器发送HTTP的请求后,服务器会返回可能一个HTML页面(当然也可以是其他的资源),我们可以利用返回的HTML页面,在其中寻找其他的Url,例如我们可以这样在浏览器上查看一下H ...

  5. ansible roles 自动化安装

    例:  ansible roles 自动化安装memcached 文件目录结构如下: cat memcached_role.yml - hosts: memcached remote_user: ro ...

  6. 【Layui__监听button】在form中监听按钮事件

    1. 前言 在使用form表单的按钮时,点击按钮总是页面刷新,代码如下 <button class="layui-btn" lay-submit lay-filter=&qu ...

  7. 过滤idea一些不需要的文件和文件夹的显示,在使用svn的时候可以很方便的过滤不需要提交的文件

    *.classpath;*.gitignore;*.hprof;*.idea;*.iml;*.lst;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.sh;*.yar ...

  8. redis系列之3----redis高级应用(主从、事务与锁、持久化)

    文章主目录 安全性设置 主从复制 事务与锁 持久化机制 发布以及订阅消息 上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下 ...

  9. 最短路径树:Dijstra算法

    一.背景 全文根据<算法-第四版>,Dijkstra算法.我们把问题抽象为2步:1.数据结构抽象   2.实现 二.算法分析 2.1 数据结构 顶点+边->图.注意:Dijkstra ...

  10. RSA host key has changed