数据结构算法,通用控制台完善

来源:互联网 发布:手机app界面设计软件 编辑:程序博客网 时间:2024/05/25 19:56

通用控制台完善,增加退出功能,增加返回主菜单,为不同叶子节点增加一个证书信息,将来结束时返回这个整数信息,而不是返回叶子节点的字符串

package com.yaofei.first;import java.util.ArrayList;import java.util.List;public class Tree {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);}// 得到所有孩子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;}// 得到父节点。public String getParent(String x) {for (int i = 0; i < lst.size(); i++) {if (lst.get(i).data.equals(x)) {x = lst.get(i).parent;return x;// 重新调用自己}}return null;}}package com.yoafei.first;import java.util.List;import java.util.Scanner;public class Menu {/** * @param args */Tree tree = new Tree();public void add(String parent, String child) {tree.add(parent, child);}public String go(String x) {Scanner scn = new Scanner(System.in);String isX = "";for (;;) {List<String> lst = tree.getChild(x);if (lst.isEmpty())return x;System.out.println("-------------------------");for (int i = 0; i < lst.size(); i++) {System.out.println(i + "." + lst.get(i));}System.out.println("u.返回上一级");System.out.println("m.返回主菜单");System.out.println("e.退出程序");System.out.println("-------------------------");System.out.print("请输入选择:");String s = scn.nextLine();if (s.equals("u")) {String x1 = tree.getParent(x);if (x1 != null) {x = x1;continue;}}if (s.equals("m")) {isX = "水果";}if (s.equals("e")) {return "";}try {if (isX.equals("水果")) {x = isX;isX = "";} else {String x1 = lst.get(Integer.parseInt(s));x = x1;}} catch (Exception e) {System.out.println("你的选择不在菜单项里,请重新选择!");}}}public static void main(String[] args) {Menu m = new Menu();m.add("水果", "苹果");m.add("水果", "香蕉");m.add("水果", "梨子");m.add("苹果", "红富士苹果");m.add("苹果", "青苹果");m.add("红富士苹果", "红富士1号");m.add("红富士苹果", "红富士2号");String t = m.go("水果");}}运行结果如下:-------------------------0.苹果1.香蕉2.梨子u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:0-------------------------0.红富士苹果1.青苹果u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:0-------------------------0.红富士1号1.红富士2号u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:m-------------------------0.苹果1.香蕉2.梨子u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:0-------------------------0.红富士苹果1.青苹果u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:u-------------------------0.苹果1.香蕉2.梨子u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:0-------------------------0.红富士苹果1.青苹果u.返回上一级m.返回主菜单e.退出程序-------------------------请输入选择:e


0 0
原创粉丝点击