Как я могу использовать значение, которое я выбрал из Arraylist на Hashmap? - PullRequest
0 голосов
/ 23 апреля 2020
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Scanner;

public class Project {

    public static void main(String[] args) {
        TheMenu();
    }
    public static List<String> initPizzas() {
        ArrayList<String> thePizza = new ArrayList<String>();
        thePizza.add("Cheese");
        thePizza.add("Mixed");
        thePizza.add("Mushroom");
        thePizza.add("Meat");
        return thePizza;
    }
    public static void viewAllPizza(List<String> pizzas,String CustomerRef[]) {
        ListIterator<String> it = pizzas.listIterator(); //to enumerate the pizzas in the menu
        while(it.hasNext()) {
            System.out.println(it.nextIndex() + " " + it.next());
        }

    }

    public static void addPizza(List<String> pizzas, String CustomerRef[]) {
        Scanner input = new Scanner(System.in);
        String Exit = "E";

        while(true) {
            System.out.println("Enter the pizza you would like to add and E to exit");
            String choice = input.next();

            if(choice.equals(Exit)) {
                break;
            }else {
                pizzas.add(choice);
;           }
        }
    }
    public static void TheMenu() {
        String Customer[] = new String[10];

        Scanner input = new Scanner(System.in);
        List<String> Pizzas = initPizzas();


        String option;
        do {
            System.out.println("\nMenu");
            System.out.println("V: Views all Pizza");
            System.out.println("A: To add a Pizza to the list");
            System.out.println("O: To order Pizza");
            System.out.println("Q: To exit");

            option = input.next();

            if (option.charAt(0) == 'V' ) 
            { 
                viewAllPizza(Pizzas,Customer);
            } 
            if (option.charAt(0) == 'A' ) 
            { 
                addPizza(Pizzas,Customer);
            }
            if (option.charAt(0) == 'O') {
                orderPizza(Pizzas, Customer);
            }
            }while (option.charAt(0) != 'Q');
        }
    public static void orderPizza(List<String> viewAllPizza,String CustomerRef[]) {
        Map<String, Integer> counts = new HashMap<String, Integer>();

        for(String str: viewAllPizza()) {
            if(counts.containsKey(str)) {
                counts.put(str, counts.get(str) + 1);
            }else {
                counts.put(str, 1);
            }
        }
        for(Map.Entry<String, Integer> entry : counts.entrySet()) {
            System.out.println(entry.getKey() + " = " + entry.getValue());
        }
    }
}

Я прошу прощения, если я сделал слишком много ошибок, но у меня нет большого опыта с java. Я пытался использовать Hashmap, чтобы заказать пиццу, которую я выбрал в Arraylist, и сохранить, сколько я заказал с помощью сканера, но я не смог выяснить.

вывод, который я ожидаю:

Давайте предположим, что я хочу заказать 4 мясные и 1 сырную пиццу (я хочу ввести эти значения с помощью сканера)

-
Orders
-
Meat   4
Cheese 1

Но когда я использую метод orderPizza, он берет все пиццы в Arraylist и добавляет +1 (проблемати c часть)

-
Orders
-
Cheese   1
Mixed    1
Mushroom 1
Meat     1

1 Ответ

0 голосов
/ 23 апреля 2020

Реализуйте новый метод addPizzaForOrder, чтобы добавить пиццу в список пицц, которые вы хотели бы заказать. Вам необходимо обновить counts карту внутри этого метода.

public static void addPizzaForOrder(String CustomerRef[], 
                            Map<String, Integer> counts) {
      Scanner input = new Scanner(System.in);
        String Exit = "E";

        while(true) {
            System.out.println("Enter the pizza you would like to order and E to exit");
            String choice = input.next();

            if(choice.equals(Exit)) {
                break;
            }else {

                if(counts.containsKey(choice)) {
                   counts.put(choice, counts.get(choice) + 1);
                } else {
                   counts.put(choice, 1);
                }
           }
        }
    }


public static void orderPizza(Map<String, Integer> counts,String CustomerRef[]) {
        Map<String, Integer> counts = new HashMap<String, Integer>();
        addPizzaForOrder(Customer, counts);
        for(Map.Entry<String, Integer> entry : counts.entrySet()) {
            System.out.println(entry.getKey() + " = " + entry.getValue());
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...