See More

import java.lang.String; import java.lang.System; import java.util.ArrayList; import java.util.Scanner; import java.lang.Double; public class Main { private static final Scanner scanner = new Scanner(System.in); public static double sum = 0; public static void main(String[] args) { ProcessCreateProduct goods = new ProcessCreateProduct(); goods.calculateAndPrint(); }//main //****************************************************************************************** /*класс ввода количества человек, * содержит единственный метод enterPerson()*/ static class NumPerson { int person = 0; public int enterPerson(){ System.out.println("Введите количество человек (целое, больше 1): "); //данные, оставшиеся в Scanner после считывания String remainedData =""; while (true){ if (scanner.hasNextInt()){ person = scanner.nextInt(); // Проверяем, остались ли данные в scanner if (scanner.hasNextLine()) { remainedData = scanner.nextLine(); if (remainedData.length()>1) { System.out.println("Введите только число! Введите еще раз:"); continue; } } if (person<= 1){ System.out.println("Число должно быть больше 1! Введите еще раз: "); } else { return person; } } else if (scanner.hasNextDouble()) { System.out.println("Число должно быть целым! Введите еще раз: "); scanner.next(); } else if (scanner.hasNextLine()){ //если ввод нач с букв, заканчивается целым числом System.out.println("Введите только число! Введите еще раз: "); scanner.nextLine(); } } }//enterPerson }//NumPerson //********************************************************************** /*Основной класс работы с товаром * Содержит след методы: * createProduct() - ввод товаров, цены, форматир рублей и проверок ввода * getPrice() - проверка правильности введеной цены * calculateAndPrint() - метод, содержащий всю структуру программы, * от ввода данных, подсчета суммы, печати товаров и стоимости */ static class ProcessCreateProduct{ ArrayListproductsList = new ArrayList<>(); ArrayList createProduct(){ String newName = ""; double newPrice = 0; String newRubles = ""; while (true){ System.out.println("Введите название товара: "); newName = scanner.nextLine(); newName = newName.trim(); //проверка на пустую строку или строку из пробелов if (newName.isBlank()){ System.out.println("Вы не можете ввести пустое название товара! "); continue; } boolean flPutProduct = false; //флаг уже положенного товара //Если уже есть данный товар в списке if (!productsList.isEmpty()){ //ищем его в списке for (Product item: productsList){ if (item.name.equalsIgnoreCase(newName)){ //кладем в список вместе с ценой productsList.add(item); System.out.println("Товар "+ item.name + " успешно добавлен в корзину. Стоимость товара " + item.price + " " + item.rubles); sum+= item.price; flPutProduct = true; break; } } } if (!flPutProduct) { System.out.println("Введите цену товара в рублях (формат рр,кк): "); newPrice = getPrice(); //тк склонение слово рубль - отдельный класс FormatRubles format = new FormatRubles(); newRubles = format.formatRubles(newPrice); //Товар прошел все проверки //создаем объект товара, кладем в список Product newProduct = new Product(newName,newPrice,newRubles); productsList.add(newProduct); System.out.println("Товар "+ newProduct.name + " успешно добавлен в корзину"); sum+= newProduct.price; } System.out.println("Хотите добавить следующий товар?"); System.out.println("Для прекращения ввода введите команду: Завершить "); System.out.println("Для продолжения работы нажмите любую клавишу "); String command = scanner.nextLine(); if (command.equalsIgnoreCase("Завершить")){ return productsList; } }//while }//createProduct private double getPrice(){ double number = 0; //данные, оставшиеся в Scanner после считывания String remainedData =""; while (true){ if (scanner.hasNextDouble()){ number = scanner.nextDouble(); // Проверяем, остались ли данные в scanner if (scanner.hasNextLine()) { remainedData = scanner.nextLine(); if (remainedData.length()>1) { System.out.println("Введите только число в формате: рубли,копейки! Введите еще раз:"); continue; } } if (number <= 0){ System.out.println("Цена должна быть больше 0! Введите еще раз: "); } else return number; } else if (scanner.hasNextLine()){ //если ввод нач с букв, заканчивается числом System.out.println("Введите только число в формате: рубли,копейки! Введите еще раз: "); scanner.nextLine(); } } }//getPrice void calculateAndPrint(){ NumPerson countPerson = new NumPerson(); int number = countPerson.enterPerson(); ArrayList list = new ArrayList<>(createProduct()); System.out.println("Добавленные товары: "); String message = "Товар: %s\tцена: %.2f %s"; for (int i = 0; i=11)&&((digit % 100)<=14)){ return " рублей"; } else { switch (digit % 10) { case 1: return " рубль"; case 2: case 3: case 4: return " рубля"; default: return " рублей"; } } } }//FormatRubles //**************************************************************** /*Класс структуры товара, который добавляем в список*/ static class Product { String name; //название товара double price; //цена String rubles; //формат валюты public Product(String name,double price, String rubles){ this.name = name; this.price = price; this.rubles = rubles; } }//Product }