Помогите дописать программу, добавление профилей
Написала программу кофемашина, но не могу добавить возможность добавления профиля с фиксированными напитками и последующим быстрым набором. Точнее, профиль у меня добавляется, нет понимания, как сделать быстрый набор с последующим приготовлением кофе.
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.logging.Logger;
public class CoffeeMachine {
static Scanner scan = new Scanner(System.in);
static Integer coffee = 100, milk = 100, water = 1000, bin = 0;
final int COFFEE_MAX = 501, MILK_MAX = 200, WATER_MAX = 2000;
static int Coffee_Count = 0;
static int Coffee_Count1 = 0;
HashMap<String, HashMap<String, Integer>> profile = new HashMap<>();
private static final Logger logger = Logger.getLogger(CoffeeMachine.class.getName());
enum Cappuccino_Recipe {
WATER(50),
COFFEE(10),
MILK(5);
private final int value;
Cappuccino_Recipe(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
enum Espresso_Recipe {
WATER(30),
COFFEE(10);
private final int value_1;
Espresso_Recipe(int value_1) {
this.value_1 = value_1;
}
public int getValue() {
return value_1;
}
}
public CoffeeMachine() {
}
private void setCoffee() {
System.out.println("Кофе(мг) " + String.format("%d", coffee));
System.out.println("Введите сколько кофе добавить(мг)");
while (!scan.hasNextInt()) scan.next();
int volumeCoffee = scan.nextInt();
if (coffee + volumeCoffee > COFFEE_MAX) {
System.out.println("Можно добавить max: " + (COFFEE_MAX - coffee) + " мг \n \n \n");
} else {
coffee = coffee + volumeCoffee;
logger.info("Добавлено" + volumeCoffee + "мг кофе");
System.out.println("Добавляю кофе \n \n \n");
}
}
private void setMilk() {
System.out.println("Молоко(мл) " + String.format("%d", milk));
System.out.println("Введите сколько молока добавить(мл)");
try {
int volumeMilk = scan.nextInt();
if (milk + volumeMilk > MILK_MAX) {
System.out.println("Можно добавить max: " + (MILK_MAX - milk) + " мл \n \n \n");
} else {
milk = milk + volumeMilk;
logger.info("Добавлено" + volumeMilk + " мл молока");
System.out.println("Добавляю молоко \n \n \n");
}
} catch (NumberFormatException | InputMismatchException e) {
System.out.println("Введите корректное значение!");
}
}
private void setWater() {
try {
System.out.println("Вода(мл) " + String.format("%d", water));
System.out.println("Введите сколько воды добавить(мл)");
int volumeWater = scan.nextInt();
if (water + volumeWater > WATER_MAX) {
System.out.println("Можно добавить max: " + (WATER_MAX - water) + " мл \n \n
\n");
} else {
water = water + volumeWater;
logger.info("Добавлено" + volumeWater + " мл воды");
System.out.println("Добавляю воду \n \n \n");
}
} catch (NumberFormatException | InputMismatchException e) {
System.out.println("Введите корректное значение!");
}
}
private void setCleanMachine() {
System.out.println("Корзина(%) " + String.format("%d", bin));
if (bin > 70) {
System.out.println("Очистка Кофемашины\n \n \n");
bin = 0;
logger.info("Очистка машины");
} else {
System.out.println("Очистка не требуется \n \n \n");
}
}
private void GetIngredient() {
System.out.println("Кофе(мг) " + String.format("%d", coffee));
System.out.println("Молоко(мл) " + String.format("%d", milk));
System.out.println("Вода(мл) " + String.format("%d", water));
System.out.println("Корзина(%) " + String.format("%d", bin));
}
private void Espresso() {
System.out.println("Сколько порций кофе вам необходимо? \n 1. 3 порции \n 2.Ввести нужное
количество \n 3.Рецепт Espresso");
while (!scan.hasNextInt()) scan.next();
int choice = scan.nextInt();
boolean end = false;
for (int i = 1; i <= 3; i++) {
if (end)
break;
switch (choice) {
case 1:
this.addEspresso();
end = true;
break;
case 2:
this.addEspressoChoice();
end = true;
break;
case 3:
System.out.println("Рецепт Espresso:" + Espresso_Recipe.
logger.info("Выведен рецепт");
end = true;
break;
default:
System.out.println("Выберите значение \n \n \n");
}
}
}
private void addEspresso() {
if (coffee >= 30 && water >= 90 && bin <= (100 - 15)) {
System.out.println("Делаю Espresso");
System.out.println("Добавляю кофе");
coffee = coffee - 30;
System.out.println("Добавляю воду");
water = water - 90;
bin = bin + 15;
System.out.println("Кофе готово\n \n \n");
logger.info("Приготовлено 3 порции Espresso");
Coffee_Count1 = Coffee_Count1 + 3;
} else {
System.out.println("Кофе(грамм) " + String.format("%d", coffee));
System.out.println("Вода(литр) " + String.format("%d", water));
System.out.println("Требуется чистка Кофемашины! " + String.format("%d", bin
System.out
}
}
private void
while (!scan.hasNextInt()) scan.
int choiceVoliume = scan.
if (coffee >= 10 * choiceVoliume && water >= 30 * choiceVoliume && bin <= (100 - (5 *
System.out.println(
System.out.println(
coffee = coffee - (10 *
System.out.println(
water = water - (30 * choiceVoliume
bin = bin + (5 * choiceVoliume
System.out.println("Кофе готово\n \n \n"
logger.info("Приготовлено" + choiceVoliume +
Coffee_Count1 = Coffee_Count1
}
System.out.println("Кофе(грамм) " + String.format("%d", coffee
System.out.println("Вода(литр) " + String.format("%d", water
System.out.println("Требуется чистка Кофемашины! " + String.format("%d", bin) + " %");
System.out.println("Некоторые ингридиенты недоступны, необходимо заполнить перед
приготовлением кофе\n \n \n");
}
}
public void allCoffee() {
System.out.println("Всего приготовлено Espresso: " + Coffee_Count1 + " шт\n \n \n");
System.out.println("Всего приготовлено Cappuccino: " + Coffee_Count + " шт\n \n \n"
}
private void Cappuccino() {
System.out.println("Сколько порций кофе вам необходимо? \n 1. 3 порции \n 2.Ввести нужное
количество \n 3.Рецепт Cappuccino\n ");
while (!scan.hasNextInt()) scan.next();
int choice = scan.nextInt();
boolean end = false;
for (int i = 1; i <= 4; i++) {
if (end)
break;
switch (choice) {
case 1:
this.addCappuccino();
end = true;
break;
case 2:
this.addCappuccinoChoice();
end = true;
break;
case 3:
System.out.println("Рецепт Cappuccino \n" + Cappuccino_Recipe.WATER +
Cappuccino_Recipe.WATER.getValue() + "\n" + Cappuccino_Recipe.COFFEE +
Cappuccino_Recipe.COFFEE.getValue() + "\n" + Cappuccino_Recipe.MILK +
Cappuccino_Recipe.MILK.getValue() + "\n \n \n");
end = true;
logger.info("Выведен рецепт");
break;
default:
System.out.println("Выберите значение\n \n \n"
}
}
}
private void addCappuccino() {
if (coffee >= 30 && milk >= 15 && water >= 150 && bin <= (100 - 15)) {
System.out.println("Делаю Cappuccino");
System.out.println("Добавляю 30грамм кофе");
coffee = coffee - 30;
System.out.println("Добавляю 15мл молока");
milk = milk - 15;
System.out.println("Добавляю 150мл воды");
water = water - 150;
bin = bin + 15;
System.out.println("Cappuccino готово! \n \n \n");
Coffee_Count = Coffee_Count + 3;
logger.info("Приготовлено 3 порции Cappuccino"
} else {
System.out.println("Кофе(грамм) " + String.format("%d", coffee));
System.out.println("Молоко(литр) " + String.format("%d", milk));
System.out.println("Вода(литр) " + String.format("%d", water));
System.out.println("Требуется чистка Кофемашины! " + String.format("%d", bin) + " %");
System.out.println("Некоторые ингридиенты недоступны, необходимо заполнить перед
приготовлением кофе\n \n \n"
}
}
private void addCappuccinoChoice() {
int choiceVoliume = scan.nextInt();
if (coffee >= 10 * choiceVoliume && milk >= 5 * choiceVoliume && water >= 50 *
choiceVoliume && bin <= (100 - (5 * choiceVoliume))) {
System.out.println("Делаю Cappuccino");
System.out.println("Добавляю кофе");
coffee = coffee - (10 * choiceVoliume);
System.out.println("Добавляю молоко");
milk = milk - (5 * choiceVoliume);
System.out.println("Добавляю воду");
water = water - (50 * choiceVoliume);
bin = bin + (5 * choiceVoliume);
System.out.println("Cappuccino готово! \n \n \n");
logger.info("Приготовлено" + choiceVoliume + "порции Cappuccino");
Coffee_Count = Coffee_Count + choiceVoliume
} else {
System.out.println("Кофе(грамм) " + String.format("%d", coffee));
System.out.println("Молоко(литр) " + String.format("%d", milk));
System.out.println("Вода(литр) " + String.format("%d", water));
System.out.println("Требуется чистка Кофемашины! " + String.format("%d", bin) + " %");
System.out.println("Некоторые ингридиенты недоступны, необходимо заполнить перед приготовлением кофе\n \n \n");
}
}
public void addProfile() {
Scanner scanner = new Scanner(System.in);
HashMap<String, Integer> coffeeNumber = new HashMap<>();
System.out.println ("Введите какой напиток вы предпочитаете: ? ");
String drinkLove = scanner.nextLine();
System.out.println ("Введите сколько порций вам добавить в профиль? ");
int volt = scanner.nextInt();
coffeeNumber.put(drinkLove, volt);
System.out.println ("Введите имя ");
String name = scanner.next();
profile.put(name, coffeeNumber);
System.out.println("Профиль добавлен:"+ name + "\n" + profile + "\n");
}
public void startIO() {
System.out.println("Выберите операцию!");
boolean t = true;
while (t) {
this.GetIngredient();
System.out.println(" 1.Cappuccino \n 2.Espresso \n 3.Добавить кофе \n 4.Добавить
молоко \n 5.Добавить воду \n 6.Очистить \n 7.Количество приготовленного кофе \n 8.Добавить
профиль \n 9.Выключить ");
char c = CoffeeMachine.scan.next().charAt(0);
switch (c) {
case '1':
this.Cappuccino();
break;
case '2':
this.Espresso();
break;
case '3':
this.setCoffee();
break;
case '4':
this.setMilk();
break;
case '5':
this.setWater();
break;
case '6':
this.setCleanMachine();
break;
case '7':
this.allCoffee();
break;
case '8':
this.addProfile();
break;
case '9':
System.out.println("Выключить");
t = false;
break;
}
}
}
static class MakeCoffee {
public static void main(String[] args) {
boolean t = true;
while (t) {
Scanner scan = new Scanner(System.in);
System.out.println("Включить кофемашину Y");
char press = scan.next().charAt(0);
if (press == 'Y' || press == 'y' || press == 'н' || press == 'Н') {
CoffeeMachine cm = new CoffeeMachine();
logger.info("Кофемашина запущена");
cm.startIO();
break
}else
System.out.println("Кофемашина выключена!");
}
}
}
}