Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
public class Calculator {

public static double calculateTotalSum(double price, double totalSum) { // метод подсчёта суммы всех товаров
totalSum = totalSum + price;
return totalSum;
}

public static double splitCheck(double numberOfGuests, double totalSum) { // метод разделения суммы на количество гостей
double priceOfGuest = totalSum / numberOfGuests;
String result2 = String.format("%.2f", priceOfGuest);
System.out.println("Каждый из гостей должен заплатить: " + result2 + " " + Cases.checkCorrectCase(priceOfGuest));
return priceOfGuest;
}

}

44 changes: 44 additions & 0 deletions src/main/java/Cart.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import java.util.Scanner;

public class Cart {
String nameOfDish = "";
double price = 0;
String totalCart = "";
double totalSum = 0;

void collectTotalCart() {
Scanner scannerDish = new Scanner(System.in);
System.out.println("Введите название блюда:");
while (!"завершить".equalsIgnoreCase(nameOfDish = scannerDish.nextLine())) { // в цикле происходит бесконечный ввод товаров и цен, пока пользователь не введёт "завершить"
Scanner scannerPrice = new Scanner(System.in);
System.out.println("Введите цену блюда:");
while (true) { // цикл запускает проверку введённых данных, пока не получит корректные
if (scannerPrice.hasNextDouble()) {
price = scannerPrice.nextDouble();
ChecksIntValues.checkIntValueOfPrice(price); // вызывается метод проверки на корректность double числа
if (price > 0) {
break;
}
} else {
System.out.println("Неккоректный формат цены, введите заного:");
scannerPrice.next();
}
}
if (totalCart.equals("")) { // в этом цикле заполняются все названия товаров и все цены в одну переменную totalCart
totalCart = nameOfDish + " " + price + " " + Cases.checkCorrectCase(price);
} else {
totalCart = totalCart + "\n" + nameOfDish + " " + price + " " + Cases.checkCorrectCase(price);
}
totalSum = Calculator.calculateTotalSum(price, totalSum); // вызывается метод подсчёта стоймости всех товаров
}

}

void printTotalCartAndSum() { // этот метод выводит на экран все товары, цены и общую стоймость
System.out.println("Отлично! Итого вы заказали:\n" + totalCart);
System.out.print("Общая стоймость: ");
String result = String.format("%.2f", totalSum);
System.out.println(result + " " + Cases.checkCorrectCase(totalSum));
}

}
25 changes: 25 additions & 0 deletions src/main/java/Cases.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import static java.lang.Math.floor;

public class Cases {
public static String checkCorrectCase(Double price) {
int lastTwoNumbers = (int) (floor(price) % 100);
if (lastTwoNumbers == 0 || (lastTwoNumbers >= 5 && lastTwoNumbers <= 19)) {
return "рублей";
} else {
int lastNumber = lastTwoNumbers % 10;
switch (lastNumber) {
case 1:
return "рубль";
case 2:
case 3:
case 4:
return "рубля";

default:
return "рублей";

}
}
}
}

28 changes: 28 additions & 0 deletions src/main/java/ChecksIntValues.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
public class ChecksIntValues {


public static boolean checkIntValueOfGuests(int intNumberOfGuests) { // метод проверки правильности введённого целого числа гостей

if (intNumberOfGuests < 1) {
System.out.println("Неправильное число, повторите ввод: ");
} else if (intNumberOfGuests == 1) {
System.out.println("Вы просите поделить счёт на одного?\nПовторите ввод:");
} else {
System.out.println("Ввод принят.");
return true;

}
return false;
}

public static void checkIntValueOfPrice(double price) { // метод проверки правильности введённого числа класса double
if (price <= 0) {
System.out.println("Некорректная цена, введите заного:");
} else {
System.out.println("Ввод принят");
System.out.println("Желаете ещё добавить блюдо?");

}

}
}
37 changes: 33 additions & 4 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,37 @@
public class Main {
// dev branch for Y.Practicum

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// ваш код начнется здесь
// вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости
System.out.println("Привет Мир");
Cart cart = new Cart();
int numberOfGuests = countNumberOfGuests(); //подсчёт количества гостей
cart.collectTotalCart(); //подсчёт количества всех блюд,их цен и общей суммы товаров
cart.printTotalCartAndSum(); // вывод на экран всех товаров, цен и общей суммы
Calculator.splitCheck(numberOfGuests, cart.totalSum); // подсчёт и вывод суммы к оплате на каждого гостя
}


public static int countNumberOfGuests() {
Scanner scanner = new Scanner(System.in);
int currentNumberOfGuests;
System.out.println("Введите количество гостей:");
while (true) { //цикл запускает проверку введённых данных, пока не получит корректные
if (scanner.hasNextInt()) {
currentNumberOfGuests = scanner.nextInt();
if (ChecksIntValues.checkIntValueOfGuests(currentNumberOfGuests)) { // вызывается метод проверки на корректность целого числа
break;
}
} else {
System.out.println("Некорректный формат ввода, повторите ввод:");
scanner.next();
}
}
System.out.println("Ок, итого вас " + currentNumberOfGuests + ".");
return currentNumberOfGuests;
}


}