通用菜单_完善功能

为通用控制台菜单完善功能:

1. 增加“退出”功能,可以在任意位置放弃选择

2. 增加“返回到主菜单”功能,可以在任意深度回到主菜单,而不是逐级向上。

3. 为每个叶子节点(就是最终执行命令)增加一个整数信息,将来选择结束时返回这个整数信息,而不是返回叶子节点的字符串。因为不同路径的字符串可能会是相同的内容。


import java.util.*;

public class MyTree {
	private List<Node> lst = new ArrayList<Node>();

	class Node {
		String data;
		String parent;
	}

	public void add(String parent, String child) {
		Node t = new Node();
		t.data = child;
		t.parent = parent;
		lst.add(t);
	}

	/*
	 * 得到根节点 
	 * 返回根节点总是有问题,
	 * 要好好考虑一下返回null的问题 
	 * 现在总是返回null
	 */
	public String getRoot(String x) {
		for (int i = 0; i < lst.size(); i++) {
			if (lst.get(i).data.equals(x)&&x!=null){
				x = lst.get(i).parent;
				return getRoot(x);
			}
		}
		return null;
	}

	// 得到父节点
	public String getParent(String x) {
		for (int i = 0; i < lst.size(); i++) {
			if (lst.get(i).data.equals(x))
				return lst.get(i).parent;
		}
		return null;
	}

	public List<String> getChild(String x) {
		List<String> t = new ArrayList<String>();
		for (int i = 0; i < lst.size(); i++) {
			if (lst.get(i).parent.equals(x))
				t.add(lst.get(i).data);
		}
		return t;
	}
}
import java.util.List;
import java.util.Scanner;

public class MyMenu {
	MyTree tree = new MyTree();

	public void add(String parent, String child) {
		tree.add(parent, child);
	}

	public String go(String x) {
		Scanner sc = new Scanner(System.in);

		for (;;) {
			List<String> list = tree.getChild(x);
			if(list.isEmpty()){
				return x;
			}
			System.out.println("-----------");
			for (int i = 0; i < list.size(); i++) {
				System.out.println(i + "." + list.get(i));
			}
			System.out.println("- - - - - -");
			System.out.println("u.返回上一级");
			System.out.println("m.返回主菜单");
			System.out.println("e.退出");
			System.out.println("-----------");
			System.out.print("请输入选择:");

			String s = sc.nextLine();
			if(s.equals("m")){
				String x1 = tree.getRoot(x);
					x=x1;
				
				continue;
			}
			if(s.equals("e")){
				break;
			}
			if(s.equals("u")){
				String x1 = tree.getParent(x);
				if(x1 != null){
					x=x1;
				}
				continue;
			}
			try {
				String x1 = list.get(Integer.parseInt(s));
				x = x1;
			} catch (Exception e) {
				System.out.println("请重新选择!");
			}
		}
		return "退出";
	}

	public static void main(String[] args) {
		MyMenu m = new MyMenu();
		m.add("水果", "苹果");
		m.add("水果", "香蕉");
		m.add("水果", "葡萄");
		m.add("苹果", "红富士苹果");
		m.add("苹果", "国光苹果");
		m.add("国光苹果", "富强1");
		m.add("国光苹果", "富强2");

		String t = m.go("水果");
		System.out.println("您选择:" + t);
	}
}
Conclusion
-----------
0.苹果
1.香蕉
2.葡萄
- - - - - -
u.返回上一级
m.返回主菜单
e.退出
-----------
请输入选择:0
-----------
0.红富士苹果
1.国光苹果
- - - - - -
u.返回上一级
m.返回主菜单
e.退出
-----------
请输入选择:1
-----------
0.富强1
1.富强2
- - - - - -
u.返回上一级
m.返回主菜单
e.退出
-----------
请输入选择:u
-----------
0.红富士苹果
1.国光苹果
- - - - - -
u.返回上一级
m.返回主菜单
e.退出
-----------
请输入选择:e
您选择:退出






可结合迅闪,网维大师等任意的三层更新软件使用的菜单。免费漂亮的游戏菜单。 2010年,网吧无盘游戏菜单到底用哪个好?这里我们只讨论无盘客户机的游戏菜单,不考虑无盘服务器上的游戏三层更新软件,一般的三层更新软件都带有了客户机的游戏菜单,但这些菜单一般是有广告,或者收费的形式存在的,他们的菜单体积庞大,并没有针对无盘的特殊环境进行特殊的优化,所以不仅体积大,广告多,而且资源占用严重,因为他们把许多有盘上才用得着的功能全放在无盘上去用了。下面就推荐一款无盘上客户机专用的游戏菜单2010版: 你是否正在使用无盘系统并寻找一款专门用在无盘上的游戏菜单你是否正在寻找一款单机游戏菜单?你是否需要自己一个印有个人姓名或者公司名称和链接的OEM游戏菜单?你是否在寻找一个简单可依赖的游戏菜单?你是否正在寻找一个漂亮的游戏菜单?你是否需要一个家庭版的游戏菜单来管理等等繁乱的桌面?你是否正在使用虚拟磁盘系统不需要繁琐的更新游戏功能?如果你符合上面一条,那么请你往下看,这里推荐一款适合你的游戏菜单 特点: ======================= 1、漂亮,美观 2、简单、实用、快速 3、免费 4、多款皮肤,并可自行制作皮肤。 5、无网络验证,可永久免费使用 6、专门为设计。无盘 7、游戏管理方便,全傻瓜式的拖拽操作即可完成游戏添加 8、自动导入游戏方便。可一键导入分类下所有游戏。 9、无局域网游戏更新功能,但可结合更新插件更新 10、支持点击率统计和排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值