模拟KTV点歌系统

来源:Java基础案例教程

任务介绍
使用LinkedList实现编写模拟KTY点歌系统的程序。在程序中,指令0代表添加歌曲,指令1代表将所选歌曲置顶,指令2代表将所选歌曲提前一位,指令3代表退出该系统。要求根据用户输入的指令和歌曲名展现列表
实现思路
(1)为了指引用户操作,首先要将各个指令所表示的含义打印到控制台
(2)程序中需要创建一个集合作为歌曲列表,并向其添加一部分歌曲
(3)由于控制台需要实时等待用户输入命令,所以可以使用while(true)来使程序一直处于等待用户输入指令的装态
(4)可以通过Scanner类的nextInt()方法来接收控制台的信息
代码

import java.util.LinkedList;
import java.util.Scanner;

public class KTVByLinkedList {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("------------------欢迎来到点歌系统----------------");
		System.out.println("0.添加歌曲至列表");
		System.out.println("1.将歌曲置顶");
		System.out.println("2.将歌曲前移一位");
		System.out.println("3.退出");

		LinkedList<String> lineUpList = new LinkedList<String>(); // 创建歌曲列表
		addMusicList(lineUpList); // 添加一部分歌曲至歌曲列表
		System.out.println("当前歌曲列表:" + lineUpList);
		while (true) {
    
    
			System.out.println("请输入要执行的操作序号");
			int command = sc.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("功能选择有误,请输入正确的功能序号!!");
				break;
			}
			System.out.println("当前歌曲列表:" + lineUpList);
		}
	}

	/**
	 * 初始时添加歌曲名称
	 */
	private static void addMusicList(LinkedList<String> list) {
    
    
		list.add("像我这样的人");
		list.add("牧马城市");
		list.add("二零三");
		list.add("十年");
	}

	/**
	 * 执行添加歌曲
	 */
	private static void addMusic(LinkedList<String> list) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要添加的歌曲名称:");
		String music = sc.nextLine();
		list.add(music); // 将歌曲添加到列表最后
		System.out.println("已添加歌曲:" + music);
	}

	/**
	 * 执行将歌曲置顶
	 */
	private static void setTop(LinkedList<String> list) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要置顶的歌曲名称:");
		String music = sc.nextLine();
		int position = list.indexOf(music); // 查找指定歌曲的位置
		if (position < 0) {
    
    
			System.out.println("单曲列表中没有该歌曲");
		} else {
    
    
			list.remove(position); // 移除指定的歌曲
			// 或 list.remove(music);
			list.addFirst(music); // 将指定的歌曲放到第一位
			// 或 list.add(0, music);
		}
		System.out.println("应将歌曲" + music + "置顶");
	}

	/**
	 * 执行将歌曲提前一位
	 */

	private static void setBefore(LinkedList<String> list) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要置前的歌曲名称");
		String music = sc.nextLine();
		int position = list.indexOf(music); // 查找指定歌曲的位置
		if (position < 0) {
    
    
			System.out.println("单曲列表中没有该歌曲");
		} else if (position == 0) {
    
    
			System.out.println("该歌曲已经在第一位");
		} else {
    
    
			list.remove(music);
			list.add(position - 1, music);
		}
		System.out.println("应将歌曲" + music + "提前一位");
	}

	/**
	 * 退出
	 */
	private static void exit() {
    
    
		System.out.println("----------------退出----------------");
		System.out.println("您已退出点歌系统");
		System.exit(0);
	}
}

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41897680/article/details/103429076
今日推荐