Jay
2024-11-08 02722a3f9eca857ce7fffea352e9f7ee692a1b71
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.iailab.netsdk.common;
 
import java.lang.reflect.Method;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.Vector;
 
public class CaseMenu {
    
    public static class Item {
        private Object object;
        private String itemName;
        private String methodName;
        
        public Item(Object object, String itemName, String methodName) {
            super();
            this.object = object;
            this.itemName = itemName;
            this.methodName = methodName;
        }
 
        public Object getObject() {
            return object;
        }
 
        public String getItemName() {
            return itemName;
        }
 
        public String getMethodName() {
            return methodName;
        }
    }
    
    private Vector<Item> items;
 
    public CaseMenu() {
        super();
        items = new Vector<Item>();
    }
    
    public void addItem(Item item) {
        items.add(item);
    }
    
    private void showItem() {
        final String format = "%2d\t%-20s\n";
        int index = 0; 
        System.out.printf(format, index++, "exit App");
        for (Item item : items) {
            System.out.printf(format, index++, item.getItemName());
        }
        System.out.println("Please input a item index to invoke the method:");
    }
    
    public void run() {
        Scanner scanner = new Scanner(System.in);
        while(true) {            
            showItem();            
            try {        
                int input = Integer.parseInt(scanner.nextLine());
 
                if (input <= 0 ) {
                    System.err.println("input <= 0 || scanner.nextLine() == null");
//                    scanner.close();
//                    System.exit(0);
                    break;
                }
                    
                if (input < 0 || input > items.size()) {
                    System.err.println("Input Error Item Index.");
                    continue;
                }
                
                Item item = items.get(input - 1);
                Class<?> itemClass = item.getObject().getClass();
                Method method = itemClass.getMethod(item.getMethodName());
                method.invoke(item.getObject());
            } catch (NoSuchElementException e) {
//                scanner.close();
//                System.exit(0);
                break;
            } catch (NumberFormatException e) {
                System.err.println("Input Error NumberFormat.");
                continue;
            } catch (Exception e) {
                e.printStackTrace();
            } 
        }
        
        scanner.close();
    }
}