通用菜单 完善功能


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

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

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

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

源码UMenu.java


package UMenu;

import java.util.List;
import java.util.Scanner;

import NTree.NTree;

public class UMenu {
    NTree t = new NTree();
    
    public void add(String parent, String child) {
        t.add(parent, child);
    }
    
    public String go(String x) {
        Scanner sc = new Scanner(System.in);
        for (;;) {
            List<String> lst = t.getChild(x);
            if (lst.isEmpty()) {
                sc.close();
                return x;
            }
            for (int i=0; i<lst.size(); i++) {
                System.out.println(i+". "+lst.get(i));
            }
            System.out.println("----------");
            System.out.println("a. return");
            System.out.println("b. menu");
            System.out.println("c. leave");
            
            String s = sc.nextLine();
            String x1 = "";
            if (s.equals("a")) {
                x1 = t.getParent(x);
                if (x1!=null) {
                    x = x1;
                }
                continue;
            }
            if (s.equals("b")) {
                while (t.getParent(x)!=null) {
                    x = t.getParent(x);
                }
            }
            if (s.equals("c")) {
                break;
            }
            try {
                x1 = lst.get(Integer.parseInt(s));
                x = x1;
            }
            catch (Exception e) {
                System.out.println("choose again!");
            }
            
        }
        sc.close();
        return "quit";
            
    }
    public static void main(String[] args) {
        UMenu m = new UMenu();
        m.add("水果", "苹果");
        m.add("水果", "香蕉");
        m.add("水果", "葡萄");
        m.add("苹果", "红富士苹果");
        m.add("苹果", "国光苹果");
        m.add("国光苹果", "富强1号");
        m.add("国光苹果", "富强2号");
        String t = m.go("水果");
        System.out.println("Ur Choice: " + t);
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注