1

これまでのところ、仮想自動販売機用に次のコードを作成しました。

public class VirtualVender {
        public static void main(String[] args){
        int MILK_CHOCOLATE = 01;
        int DARK_CHOCOLATE = 02;
        int LIGHT_CHOCOLATE = 03;
        int COOKIE_CHOCOLATE = 04;
        int SELECTION;
        System.out.println("********************");
        System.out.println("Vending Machine");
        System.out.println("Enter Your Selection");
        Scanner input = new Scanner(System.in);
        SELECTION = input.nextInt();
        System.out.println("********************");
    }
}

私の理解では、ユーザー入力は SELECTION に格納されるはずですが、01 を入力した場合に SELECTION で MILK_CHOCOLATE を表示するにはどうすればよいですか? より詳細な質問が必要な場合は、返信してください。私の質問をよりよく説明します。

助けてくれてありがとう!

4

3 に答える 3

1

フレーバーと関連する整数値を定義する列挙型を宣言します。

public enum Flavour {
  MILK_CHOCOLATE(1), 
  DARK_CHOCOLATE(2), 
  LIGHT_CHOCOLATE(3), 
  COOKIE_CHOCOLATE(4);

  private final int value;

  private Flavour(int value) {
    this.value = value;
  }

  public static Flavour fromValue(int value) {
    for (Flavour f : values()) {
      if (f.value == value) {
        return f;
      }
    }
    return null;
  }

  // Add a toString() method if you want to better control
  // how the flavour names are printed
}

次に、列挙型を使用してユーザー入力値を検証します。

System.out.println("********************");
System.out.println("Vending Machine");
System.out.println("Enter Your Selection");

// Use try-with-resources to close Scanner:
try (Scanner input = new Scanner(System.in)) {
  int selection = input.nextInt();

  Flavour flavour = Flavour.fromValue(selection);

  if (flavour != null) {
    System.out.println(flavour);
  } else {
    System.out.println("Bad selection!");
  }
  System.out.println("********************");
}
于 2013-08-27T18:21:57.733 に答える
1

それを行うにはさまざまな方法があります。ここに1つあります:

if (SELECTION == MILK_CHOCOLATE) {
  System.out.println("Please enjoy your milk chocolate.");
}

ところで、ALL_UPPERCASE定数、つまり、プログラムの存続期間を通じて同じままである値を使用するのが慣習です。whileMILK_CHOCOLATEは定数ですが、ユーザーの選択はそうではありません。代わりにその変数に名前を付ける必要がありますselection。Java コンパイラーは気にしませんが、コードは他のプログラマーにとって読みやすくなります。

于 2013-08-27T18:14:50.563 に答える
0

ユースケースの男。

String output; 
switch (selection) {
            case 1:  output = "milk chocolate";
                     break;
            case 2:  output = "dark chocolate";
                     break;
            ..

            default: output = "Not a correct value."
}

自動販売機の問題や一般的な回路に最もよく似ていると思います。

于 2013-08-27T18:18:37.897 に答える