1

重複の可能性:
Javaの文字列を使用したSwitchステートメント

わかりました、基本的に私はこれが可能かどうかとそれを行う方法を知りたいです。メニューがあり、この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[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に入ると、プログラムは終了します。これを行うための最善の方法がわかりません。

ありがとう!

4

2 に答える 2

2

switch-caseステートメントでのStringの使用は、jdk 7でサポートされています。例については、次のリンクを参照してください。http: //docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html
役立ちます。

于 2012-11-05T03:59:07.530 に答える
0

Switchステートメントは、これを行うための最もクリーンな方法の1つですが、主観的であるため、それが「最良」であるかどうかについては議論しません。しかし、私はC / C ++のバックグラウンドを持っており、Javaを作成する前にほとんどCとC ++を作成したことがある他の人にとっても、このswitchステートメントは複数のケースを乗り越える自然な方法です。そのちょうどより読みやすい。そして、Cランドのある時点では、O(1)ベースのアルゴリズムを使用して一致するケースを見つけるか、存在する場合はデフォルトに一致したため、可能な限り最速の条件テスターであると考えられていました。

しかし、JVM / javacの場合は特にパフォーマンステストを行ったことがないため、よくわかりません。しかし、全体として、構文的に最も自然で読みやすいものです。

于 2012-11-05T02:51:40.960 に答える