模拟KTV点歌系统

任务场景:用集合,实现点歌功能,功能菜单如下:

模拟KTV点歌系统_第1张图片

实现思路:

创建一个功能类,实现点歌中的各个功能,然后主方法用于打印功能表

创建一个集合,用于存储歌曲,可以用ArrayList和 LinkedList集合中的方法。

 代码实现如下:

方法一:

import java.util.*;
//菜单功能类
class Menu{
//	添加歌曲
	public void addMusic(ArrayList arr,String name){
		arr.add(name);
		System.out.println("已添加歌曲:"+name);
		showMenu(arr);
	}
//	歌曲置顶
	public void fristMusic(ArrayList arr,String name) {
			if(arr.contains(name)) {
				int i=arr.indexOf(name);
				arr.remove(i);
				arr.add(0,name);
				showMenu(arr);
			}else {
				System.out.println("歌单没有·这首歌");	
			}
	}
//	歌曲移前一位
	public void nextMusic(ArrayList arr,String name) {
		if(arr.contains(name)) {		//检查是不是包含这首歌
			int i=arr.indexOf(name);
			if(i==0) {
				System.out.println("当前已经最前面的一首歌");
			}else {
				arr.remove(i);
				arr.add(i-1,name);
			}
			showMenu(arr);
		}else {
			System.out.println("歌单没有这首歌");
		}
	}
//	显示歌表
	public void showMenu(ArrayList arr) {
//		Iterator it=arr.iterator();
//		while(it.hasNext()) {
//			Object obj=it.next();
//			System.out.print(obj+" ");
//		}
		System.out.println(arr.toString());
	}
}
public class test5{
	public static void main(String[] args) {
	System.out.println("------点歌系统------");
	System.out.println("");
	System.out.println("0.添加歌曲至列表");
	System.out.println("1.将歌曲置顶");
	System.out.println("2.将歌曲移到下一位");
	System.out.println("3.退出");
	ArrayList arr=new ArrayList<>();
	arr.add("稻香");
	arr.add("夜曲");
	arr.add("听妈妈的话");
	arr.add("stay with me");
	System.out.println("现在歌曲单:"+arr.toString());
	Scanner sc=new Scanner(System.in);
	Menu menu=new Menu();
	while(true) {
		System.out.println("请输入你的操作:");
		int choose=sc.nextInt();
		switch(choose) {
		case 0:{
			System.out.println("输入歌名:");
			String name=(new Scanner(System.in)).nextLine();
			menu.addMusic(arr,name);
			break;
		}case 1:{
			System.out.println("输入要置顶的歌名:");
			String name=(new Scanner(System.in)).nextLine();
			menu.fristMusic(arr,name);
			break;
		}case 2:{
			System.out.println("输入要移至下一位的歌名:");
			String name=(new Scanner(System.in)).nextLine();
			menu.nextMusic(arr,name);
			break;
		}case 3:{
			System.out.println("退出系统");
			exit();
			break;
		}default:{
			System.out.println("输入有误!请重新输入");
			break;
		}
		}
	}
	}
//	退出功能
	private static void exit() {
		System.exit(0);
	}
}

方法二:

import java.util.*;
public class test1 {
	public static void main(String[] args) {
		System.out.println("------点歌系统------");
		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 sc=new Scanner(System.in);
			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 exit() {
		System.out.println("-----退出------");
		System.out.println("你已经退出系统");
		System.exit(0);
	}
	private static void setBefore(ArrayList lineUpList) {
		System.out.println("输入要置前的歌曲名称:");
		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 setTop(ArrayList lineUpList) {
		System.out.println("请输入要添加的歌曲名称:");
		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 addMusic(ArrayList lineUpList) {
		System.out.println("请输入要添加的歌曲名称:");
		String musicName=new Scanner(System.in).nextLine();
		lineUpList.add(musicName);
		System.out.println("已添加歌曲:"+musicName);	
	}
	private static void addMusicList(ArrayList lineUpList) {
		lineUpList.add("稻香");
		lineUpList.add("夜曲");
		lineUpList.add("夜的第七章");
		lineUpList.add("听妈妈的话");
		lineUpList.add("龙卷风");
		System.out.println("初始歌曲列表为:"+lineUpList);
	}
}

注意:Scanner类中的next()和nextLine()区分:

用next()输入时,输入扫描对象不能输入空格(即只有输入有效字符才能结束输入,而且在输入有效字符之前,空格都会抛弃,而在输入有效字符之后的空格也会抛弃)因为,它可以以空格判定是结束输入;而对于nextLine()输入时是以换行(Enter)为结束输入的,可以获取空格符。

你可能感兴趣的:(Java基础知识,java,职场和发展)