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上发生的,因为我从未专门测试过它的性能。但总而言之,它是最自然和可读的句法。