diff --git a/src/main/java/Good.java b/src/main/java/Good.java new file mode 100644 index 0000000..cd36beb --- /dev/null +++ b/src/main/java/Good.java @@ -0,0 +1,9 @@ +public class Good { + public String Name; + public double Price; + + public Good(String goodName, double goodPrice) { + Name = goodName; + Price = goodPrice; + } +} diff --git a/src/main/java/InputValueController.java b/src/main/java/InputValueController.java new file mode 100644 index 0000000..c54d048 --- /dev/null +++ b/src/main/java/InputValueController.java @@ -0,0 +1,10 @@ +public class InputValueController { + public static boolean IsNumberOfPeopleCorrect(int countPeople) { + return countPeople> 1; + } + + public static boolean IsPriceCorrect(double price) { + return price>= 0; + } +} + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index a9198c4..15cb5ab 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,64 @@ +import java.util.Scanner; + public class Main { public static void main(String[] args) { - // ваш код начнется здесь - // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости - System.out.println("Привет Мир"); + int countPeople; + TotalAmountOutput currencyNameConverter = new TotalAmountOutput(); + + Scanner scanner = new Scanner(System.in); + boolean countPeopleIsCorrect; + do + { + System.out.println("На какое количество человек разделить счёт?"); + countPeople = scanner.nextInt(); + // проверка введенного количества людей + countPeopleIsCorrect = InputValueController.IsNumberOfPeopleCorrect(countPeople); + if (!countPeopleIsCorrect){ + System.out.println("Количество должно быть больше 1"); + } + } while (!countPeopleIsCorrect); + + + SplitBillCalculator calculator = new SplitBillCalculator(countPeople); + + while (true) { + System.out.println("Введите наименование товара или команду 'Завершить' для окончания ввода товаров"); + String goodsName = scanner.next(); + if (goodsName.equalsIgnoreCase("завершить")) + break; + + double price; + System.out.println("Введите стоимость товара в формате 0,00"); + while (true){ + if (scanner.hasNextDouble()) { + price = scanner.nextDouble(); + boolean isCorrect = InputValueController.IsPriceCorrect(price); + if (isCorrect) + break; + } + System.out.println("Ошибка в формате числа. Повторите ввод"); + scanner.next(); + } + + Good good = new Good(goodsName, price); + calculator.AddGoods(good); + String rubString = currencyNameConverter.GetCorrectRubString(calculator.TotalAmount); + System.out.printf("Товар добавлен. Текущая сумма счёта %.2f %s\n", calculator.TotalAmount, rubString); + } + + System.out.println("Добавленные товары:"); + System.out.println(calculator.ListOfGoods); + + String rubString = currencyNameConverter.GetCorrectRubString(calculator.TotalAmount); + System.out.printf("Общая сумма: %.2f %s\n", calculator.TotalAmount, rubString); + + double splitTotalAmount = calculator.SplitTotalAmount(); + String splitRubString = currencyNameConverter.GetCorrectRubString(splitTotalAmount); + System.out.printf("Сумма с человека: %.2f %s\n", splitTotalAmount, splitRubString); + + System.out.println("Для завершения нажмите любую клавишу"); + scanner.next(); } } + diff --git a/src/main/java/SplitBillCalculator.java b/src/main/java/SplitBillCalculator.java new file mode 100644 index 0000000..4dc81dd --- /dev/null +++ b/src/main/java/SplitBillCalculator.java @@ -0,0 +1,20 @@ +public class SplitBillCalculator { + + int countPeople; + + public String ListOfGoods = ""; + public double TotalAmount = 0; + + public SplitBillCalculator(int countPeople) { + this.countPeople = countPeople; + } + + public void AddGoods(Good good) { + ListOfGoods = ListOfGoods +"\n"+ good.Name; + TotalAmount = TotalAmount + good.Price; + } + + public double SplitTotalAmount() { + return TotalAmount / countPeople; + } +} diff --git a/src/main/java/TotalAmountOutput.java b/src/main/java/TotalAmountOutput.java new file mode 100644 index 0000000..8493e4a --- /dev/null +++ b/src/main/java/TotalAmountOutput.java @@ -0,0 +1,26 @@ +public class TotalAmountOutput { + public String GetCorrectRubString(double totalAmount) { + int lastDigit = GetLastIntDigit(totalAmount); + + switch (lastDigit) { + case 1: + return "рубль"; + case 2: + case 3: + case 4: + return "рубля"; + default: + return "рублей"; + } + } + + //получить последнюю цифру из числа для определения падежа слова рубль + private int GetLastIntDigit (double totalAmount) { + int intTotalAmount = (int) totalAmount; + String stringTotalAmount = String.valueOf(intTotalAmount); + int length = stringTotalAmount.length(); + char lastDigit = stringTotalAmount.charAt(length-1); + return Character.getNumericValue(lastDigit); + } +} +

AltStyle によって変換されたページ (->オリジナル) /