2012-03-18 2 views
0

私はまだJavaの初心者ですので、この質問が愚かに聞こえる場合は教えてください。どんな提案も感謝しています。Java - 異なるタスクを実行するためにユーザーから異なるキーを受け入れ、ユーザーが "X"をクリックすると終了します

私は、ユーザーがキーボードから異なるタスクを実行するためのキーを入力できるようにするプログラムを実装する方法を考えています。問題は、プログラムが続行できるはずですユーザーが特定のキーをクリックするまで、 "X"と言います。

これは私が働いているPizzaDemoクラスの一部と上記のタスクを実行するgetPizzas()メソッドの一部です:問題は、私はどのような方法を見つけることができないよう、ある

public class PizzaDemo { 
     private PizzaOrder list; 
     public PizzaDemo(){ 
      list = new PizzaOrder(); 
     } 

     public static void getPizzas(){ 
      Scanner sc = new Scanner(System.in); 
      System.out.println("To add a new Ham & Cheese pizza, press H."); 
      System.out.println("To add a new Pepperoni pizza, press P."); 
      System.out.println("To add a new Tropical pizza, press T."); 
      System.out.println("To exit, press X"); 
      String input = sc.next(); 

      while(!input.equalsIgnoreCase("H") && !input.equalsIgnoreCase("P") && !input.equalsIgnoreCase("T") && !input.equalsIgnoreCase("X")){ 
       System.out.println("Invalid key. Enter again: "); 
       input = sc.next(); 
      } 

      if (input.equalsIgnoreCase("H")){ 
       System.out.println("Enter the size of the pizza: "); 
       String size = sc.next(); 
       System.out.println("Enter the number of ham toppings: "); 
       int n1 = sc.nextInt(); 
       System.out.println("Enter the number of cheese toppings: "); 
       int n2 = sc.nextInt(); 
       Topping[] top = {createTopping("ham", n1), createTopping("cheese", n2)}; 
       Pizza p = createHamCheese(size, top); 
       PizzaDemo demo = new PizzaDemo(); 
       demo.list.setPizza(p); 
       getPizzas(); 
      } 

      // the rest of the code is omitted 

     } 
    } 

再帰(ifブロック内)が呼び出されても以前に追加された要素を保持できるような方法でコンストラクタを使用することができます。誰でも私のためにいくつかの提案がありますか?コンストラクタは新しいピザの注文を初期化するために使用され、プログラムの一部なので、私はそれを省略できません。

ありがとうございました。

答えて

0

ピザのリストを引数として持つオーバーロードされたコンストラクタを用意する必要があります。

1

これに対して再帰は使用しないでください。あなたはスタックのオーバーフローで終わる可能性があります。ループを使用します。

public static void getPizzas(){ 
     Scanner sc = new Scanner(System.in); 
     String input; 
     do{ 
      //put code in here 
     } while(!input.equalsIgnoreCase("X"); 
    } 
+0

大丈夫、ループ外のコンストラクタを呼び出すと助かりますか? –

+0

ええ、私はあなたのコンストラクタがそこにあったという事実を完全に逃しました。 –

関連する問題