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

Вам нужно будет предоставить перегруженный конструктор, который принимает список пицц как arg.

1

Не используйте рекурсию для этого. У вас может закончиться переполнение стека, а не каламбур. Используйте цикл.

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

Хорошо, тогда может быть вызов конструктора вне цикла поможет? –

+0

Да, я полностью упустил тот факт, что там был ваш конструктор. –