列挙型の値上のJavaスイッチ

Devのステップ:

私は数が1の場合、ユーザは1〜7の番号を入力したい、それが月曜日であることを印刷します。数が2である場合、それは火曜日、などであることを印刷

次のコードコンパイルが、それは論理的に正しくありません。

支援が必要な場合のためのコメントを参照してください。

import java.util.Scanner;

public class Test {
    private enum Week {
        MONDAY("1"), TUESDAY("2"), WEDNESDAY("3"), 
        THURSDAY("4"), FRIDAY("5"), SATURDAY("6"), SUNDAY("7");
        private String value;

        private Week(String value) {
            this.value = value;
        }
    }

    public static void main(String[] args) {

        // How to instantiate this correctly, so that it doesn't only point to one value
        Week week = Week.MONDAY;
        System.out.print("Enter a number: ");
        Scanner input = new Scanner(System.in);
        String userInput = input.next();

        // The switch parameter is not correct. This is what needs to be fixed.
        // I want to use this case layout.
        //The enums each have a value. The user enters a value. I want to switch over userInput.
        switch (week) {
            case MONDAY: System.out.println("That's Monday"); break;
            case TUESDAY: System.out.println("That's Tuesday"); break;
            case WEDNESDAY: System.out.println("That's Wednesday"); break;
            case THURSDAY: System.out.println("That's Thursday"); break;
            case FRIDAY: System.out.println("That's Friday"); break;
            case SATURDAY: System.out.println("That's Saturday"); break;
            case SUNDAY: System.out.println("That's Sunday"); break;
            default: break;
        }
    }
}
ニコラスK:

あなたはフェッチする方法を導入する必要がある列挙型定数を渡された値に基づいて:

public static Week fetchValue(String constant) {
    for (Week week : Week.values()) {
        if (week.value.equals(constant)) {
            return week;
        }
    }
    return null;
}

今のようにそれを使用します。

Week weekday = Week.fetchValue(userInput);
if (weekday != null) {
   switch (week ) {

    // rest of the code

   }
} else {
   System.out.println("Incorrect input");
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222047&siteId=1