关于Java:使用带开关语句的字符串?

Using String with Switch statements?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Switch Statement with Strings in Java

好的,基本上我想知道这是否可行以及如何做到。我有一个菜单,我希望这个switch语句能够识别用户输入的字符或字符串。

我正在写一个小菜单程序:

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
import java.util.*;
import java.io.*;
import java.io.File;
import java.io.FileReader;

public class Personnel
{
    // Instance Variables
    private static String empName;
    private static double wage;

    public static void main(String[] args) throws Exception
    {

        clearScreen();
        question();
        printMenu();
        exit();
    }

    public static void clearScreen()
    {
        System.out.println("\u001b[H\u001b[2J");
    }

    private static void exit()
    {
        System.exit(0);
    }

    private static void printMenu()
    {
        System.out.println("\t------------------------------------");
        System.out.println("\t|Commands: n - New employee        |");
        System.out.println("\t|          c - Compute paychecks   |");
        System.out.println("\t|          r - Raise wages         |");
        System.out.println("\t|          p - Print records       |");
        System.out.println("\t|          d - Download data       |");
        System.out.println("\t|          u - Upload data         |");
        System.out.println("\t|          q - Quit                |");
        System.out.println("\t------------------------------------");
        System.out.println("");
    }

    private static void question()
    {
        System.out.println("Enter command:");
        Scanner q = new Scanner(System.in);
        // String input = q.nextLine();

        switch (q.nextLine())
        {
        case"n":
            System.out.println("Enter the name of new employee:");
            Scanner stdin = new Scanner(System.in);
            System.out.println("Hourly (h) or salaried (s):");
            Scanner stdin2 = new Scanner(System.in);
            if (stdin2.equals("h"))
            {
                System.out.println("Enter hourly wage:");
                Scanner stdin3 = new Scanner(System.in);
            }
            else
            {
                System.out.println("Enter annual salary:");
                Scanner stdin4 = new Scanner(System.in);
            }
            break;

        /*
         * case 9:
         *      System.out.println ("Please proceed.");
         *      new InputMenu();
         *      break;
         * default:
         *      System.err.println ("Unrecognized option" ); break;
         */

        }
    }
}

我要做的是让这个菜单工作,这样你就可以输入一个命令,然后我会根据输入的命令编写运行的方法。switch语句是实现这一点的最佳方法吗?在他们输入信息后,我需要它"中断"回到主菜单。在整个程序中的任何时候,如果他们输入q,程序就会退出。我不确定做这件事的最佳方法。

谢谢!


JDK7支持在switch case语句中使用字符串。请参考此链接获取示例:http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html希望这有帮助。


switch语句是实现这一点的最干净的方法之一,尽管我不认为它是"最好的",因为它是主观的。但是我来自C/C++背景,对于其他人来说,在编写Java之前,他们大多编写了C和C++,EDCOX1×0的语句是一种自然的方式来访问多个实例。它的可读性更高。在C语言的某一点上,它被认为是最快的条件测试工具,因为它使用基于O(1)的算法来查找匹配的情况,或者匹配默认情况(如果存在的话)。

但我不太确定是否是在JVM/Javac上发生的,因为我从未专门测试过它的性能。但总而言之,它是最自然和可读的句法。