Java - принимать разные ключи от пользователя для выполнения разных задач, завершаться, когда пользователь нажимает «X» - PullRequest
0 голосов
/ 18 марта 2012

Я все еще новичок в Java, поэтому, если этот вопрос звучит глупо, пожалуйста, просветите меня.Любое предложение приветствуется.

Я думаю о каком-то способе реализовать программу, которая позволяет пользователю вводить клавишу с клавиатуры для выполнения различных задач.Дело в том, что программа должна иметь возможность продолжать до тех пор, пока пользователь не нажмет определенную клавишу, скажем, "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) вызывается.У кого-нибудь есть предложения для меня?Конструктор используется для инициализации нового заказа пиццы и является частью программы, поэтому я не могу его опустить.

Заранее спасибо, ребята.

Ответы [ 2 ]

1 голос
/ 18 марта 2012

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

public static void getPizzas(){
        Scanner sc = new Scanner(System.in);
        String input;
        do{
            //put code in here
        } while(!input.equalsIgnoreCase("X");
    }
0 голосов
/ 18 марта 2012

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

...