1

私は先日練習していましたが、スイッチの文字列でこのエラーに出くわしました:

Cannot switch on a value of type String. Only int values or enum constants are permitted

これをどう直せばいいのかわからないので、助けを求めてここに来ました。私はエクリプスを使用しています。ソースは次のとおりです。2 番目の VARIABLE (大文字) は、エラーが発生する場所です。

public class Switch {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter a command: ");
    String VARIABLE = input.nextLine();

    switch (VARIABLE) {
    case "start":
        System.out.println("Machine started!");
        break;

    case "stop":
        System.out.println("Machine stopped!");
        break;

    default:
        System.out.println("Invalid command");
    }

}
}

誰かがこれで私を助けることができれば、それは素晴らしいことです. 私はこれに比較的慣れていないので、これが意味をなすかどうかはわかりません。

4

3 に答える 3

11
switch (VARIABLE) {

switchwithStringsは Java 7 以降でサポートされています。下位バージョンの Java を使用していると思います。Java バージョンを 7 にアップグレードする (または) スイッチから String を削除し、サポートされている型を使用する必要があります。

これは、switch文に関するOracleチュートリアルです。

于 2013-01-11T23:18:20.073 に答える
3

ナンバリの答えに加えて、もちろん、文字列で if-else コンストラクトを使用して、文字列でスイッチのようなロジックを作成できます。

于 2013-01-11T23:22:32.250 に答える
2

あなたのコードは正しいですが、switch-case コンストラクトの String サポートは java7 (jdk1.7) で導入されたため、エラーは、古い Java バージョンがあり、アップグレードする必要があることを意味します。Java をアップグレードしたくない場合は、複数の if-else 構造を使用する必要があります。

[...]
if(VARIABLE.equals("start")){
    System.out.println("Machine started!");
} else if(VARIABLE.equals("stop")){
    System.out.println("Machine stopped!");
} else {
    System.out.println("Invalid command");
}
[...]
于 2013-01-11T23:45:03.240 に答える