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
49 changes: 49 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import java.util.Scanner;

public class Calculator {
ProductHolder productHolder = new ProductHolder();
Formatter formatter = new Formatter();
double newProductCost;
String newProductName;
double amountPerPerson;
String rubEnding;

void calc (int numberOfPeople) {

while(true) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите наименование товара:");
newProductName = scanner.nextLine();
if (newProductName.equalsIgnoreCase("Завершить")) {
System.out.println("\nСоздание списка завершено!");
System.out.println("Добавленные товары: \n----------\n" + productHolder.names + "----------");
rubEnding = formatter.getEnding(productHolder.costs);
System.out.printf("Общая стоимость товаров: %.2f %s.\n", productHolder.costs, rubEnding);
amountPerPerson = productHolder.costs / numberOfPeople;
rubEnding = formatter.getEnding(amountPerPerson);
System.out.printf("Каждый должен заплатить: %.2f %s.", amountPerPerson, rubEnding);
break;
} else if (newProductName.equals("")) {
System.out.println("Вы ничего не ввели. Попробуйте ещё раз.");
} else {
System.out.println("Введите стоимость товара в рублях:");
while(true) {
while (!scanner.hasNextDouble()) {
System.out.println("Это не похоже на число :( Пожалуйста, введите корректную сумму.");
scanner.next();
}
newProductCost = scanner.nextDouble();
if (newProductCost > 0) {
productHolder.addNewProduct(newProductName, newProductCost);
System.out.println("Товар успешно добавлен. Добавим ещё?");
break;
} else {
System.out.println("Вы ввели отрицательное число, введите положительное!");
}
}
}
}

}

}
26 changes: 26 additions & 0 deletions src/main/java/Formatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Данный класс содержит метод для возвращения строкового значения рубля в нужном падеже
public class Formatter {

String costs;

public String getEnding(double costs) {
int num = (int) Math.floor(costs);
if (num % 100 / 10 == 1)
{
return "рублей";
}

switch (num % 10)
{
case 1:
return "рубль";
case 2:
case 3:
case 4:
return "рубля";
default:
return "рублей";
}
}

}
32 changes: 29 additions & 3 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
// dev branch for Y.Practicum
import java.util.Scanner;
public class Main {

private static final Calculator calculator = new Calculator();

public static void main(String[] args) {
// ваш код начнется здесь
// вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости
System.out.println("Привет Мир");

System.out.println("Привет! Это программа для калькуляции счёта. \nНа скольких человек необходимо разделить счёт?");

int numberOfPeople;
Scanner scanner = new Scanner(System.in);

while(true) {
// проверяем на целое число
while (!scanner.hasNextInt()) {
System.out.println("Это не похоже на целое число :( Пожалуйста, введите целое число.");
scanner.next();
}
numberOfPeople = scanner.nextInt();
// проверяем на другие возможные некорректные вводы и если всё ок, то запускаем метод calc, передав ему количество друзей
if (numberOfPeople == 1) {
System.out.println("Для одного человека нет необходимости разделять счёт, попробуйте ещё раз :)");
} else if (numberOfPeople < 1) {
System.out.println("Вы ввели значение меньше 1. Это некорректное значение, попробуйте ещё раз :(");
} else {
System.out.println("Ок! Произведём расчёт для " + numberOfPeople + " человек.");
System.out.println("Сначала создадим список товаров! Когда список будет полным, введите \"Завершить\".\n");
calculator.calc(numberOfPeople);
break;
}
}
}
}
14 changes: 14 additions & 0 deletions src/main/java/ProductHolder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Данный класс предназначен для хранения списка товаров и их суммарной стоимости

public class ProductHolder {

String names = ""; // Имена
double costs = 0.00; // Цены

// Добавление товара в список и подсчёт суммы
void addNewProduct(String newProductName, double newProductCost) {
names += newProductName + '\n';
costs += newProductCost;
}

}