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
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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.HashMap;
import java.util.Map;

public class Calculator {
private final static HashMap<String, Double> bucket = new HashMap<>();
private static double sum = 0;
private final static String billBeginning = "Каждый должен заплатить ";

public static void addProduct(String name, Double price) {
bucket.merge(name, price, Double::sum);
sum += price;
}

public static void printAllEntries() {
for (Map.Entry<String, Double> product : bucket.entrySet()) {
int lastDigit = product.getValue().intValue() % 10;
int penultimateDigit = (product.getValue().intValue() / 10) % 10;
if (lastDigit == 1 && penultimateDigit != 1) {
System.out.printf(product.getKey() + " %.2f рубль\n", product.getValue());
continue;
}
if (lastDigit >= 5 || penultimateDigit == 1 || lastDigit == 0)
System.out.printf(product.getKey() + " %.2f рублей\n", product.getValue());
else
System.out.printf(product.getKey() + " %.2f рубля\n", product.getValue());
}
System.out.println();
}


public static void getBill(int divider) {
double result = sum / (double) divider;
int lastDigit = (int) (result % 10);
int penultimateDigit = (int) ((result / 10) % 10);
if (lastDigit == 1 && penultimateDigit != 1) {
printBill(String.format("%.2f рубль\n", result));
return;
}
if (lastDigit >= 5 || penultimateDigit == 1 || lastDigit == 0)
printBill(String.format("%.2f рублей\n", result));
else
printBill(String.format("%.2f рубля\n", result));
}

private static void printBill(String ending) {
System.out.println(billBeginning + ending);
}

}
75 changes: 71 additions & 4 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,75 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
private final static String endMe = "Завершить";

public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int numberOfGuests = getGuests(reader);
addProducts( reader);
System.out.println("Добавленные товары:\n");
Calculator.printAllEntries();
Calculator.getBill(numberOfGuests);
}

private static int getGuests(BufferedReader reader) throws IOException {
int result;
try {
while (true) {
System.out.println("Введите кол-во человек:");
result = readInt(reader);
if (result <= 1)
System.out.println("Для такого кол-во человек не имеет смысла считать");
else
break;
}
return result;
} catch (NumberFormatException e) {
System.out.println("Некорректный ввод");
return getGuests(reader);
}
}

private static void addProducts(BufferedReader reader) throws IOException {
add(reader);
while (true) {
System.out.println("Хотите добавить ещё товар?");
String choice = reader.readLine();
if (choice.equalsIgnoreCase(endMe))
break;
else
add(reader);
}
}

private static void add(BufferedReader reader) throws IOException {
try {
System.out.println("Введите наименование товара:");
String name = reader.readLine();
while (true) {
System.out.println("Введите цену товара:");
double price = readDouble(reader);
if (price > 0) {
Calculator.addProduct(name, price);
break;
}
System.out.println("Цена товара должна быть больше нуля!");
}
System.out.println("Товар успешно добавлен!");
} catch (NumberFormatException e) {
System.out.println("Некорректный ввод");
add(reader);
}
}

private static int readInt(BufferedReader reader) throws IOException {
return Integer.parseInt(reader.readLine());
}

public static void main(String[] args) {
// ваш код начнется здесь
// вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости
System.out.println("Привет Мир");
private static double readDouble(BufferedReader reader) throws IOException {
return Double.parseDouble(reader.readLine());
}
}