在Switch语句中使用String?

可能重复:
在Java中使用字符串切换语句

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

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

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[Hu001b[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,则程序退出。 我不确定最好的方式去做这件事。

谢谢!


在jdk 7中支持在switch-case语句中使用String。请参阅此链接的示例:http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html
希望这可以帮助。


Switch语句是最简单的方法之一,尽管我不会认为它是因为它的主观性而是“最好的”。 但是我来自C / C ++背景,对于其他人,他们在编写Java之前主要编写C和C ++, switch语句是获得多种情况的一种自然方式。 它更可读。 并且在C域的某一点上,假设它是最快的条件测试器,因为它使用基于O(1)的算法来查找匹配的案例,或者匹配默认值(如果存在的话)。

但我不太确定它是否适用于JVM / javac,因为我从来没有对它进行性能测试。 但总而言之,它是最自然且可读的语法。

链接地址: http://www.djcxy.com/p/84513.html

上一篇: Using String with Switch statements?

下一篇: Why is this happenning with switch (Java)?