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

public class Calculator {

public String getAllItemsList(String allItemsList, String name, double price) {
Item item = new Item(name, price);
allItemsList += item.toString();

return allItemsList;

}

public String addName() {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите наименование товара: ");
return scanner.nextLine();
}

public double addPrice() {
Scanner scanner = new Scanner(System.in);
Double price;

System.out.print("Введите стоимость товара в формате рубли.копейки: ");
if (scanner.hasNextDouble()) {
price = scanner.nextDouble();
scanner.nextLine();

if (price < 0) {
System.out.println("Ошибка! Стоимость товара не может быть отрицательной.");
price = addPrice();
}
} else {
System.out.println("Ошибка! Некорректно введена цена товара (введите цену в " +
"формате \"рубли.копейки\"");
scanner.nextLine();
price = addPrice();
}
return price;
}
}
24 changes: 24 additions & 0 deletions src/main/java/Formatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
public class Formatter {

public String formatRub(double price) {
double roundedPrice = Math.floor(price) % 10;
double roundedPrice2 = Math.floor(price) % 100;

String wording;
if (roundedPrice2 == 11 || roundedPrice2 == 12 || roundedPrice2 == 13 ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь лучше использовать switch/case

roundedPrice2 == 14) {
wording = roundPrice(price) + " рублей.\n";
} else if (roundedPrice == 1) {
wording = roundPrice(price) + " рубль.\n";
} else if (roundedPrice < 5 && roundedPrice > 1) {
wording = roundPrice(price) + " рубля.\n";
} else {
wording = roundPrice(price) + " рублей.\n";
}
return wording;
}

private String roundPrice(double price) {
return String.format("%.2f", price);
}
}
23 changes: 23 additions & 0 deletions src/main/java/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
public class Item {
private String name;
private double price;

public Item (String name, double price) {
this.name = name;
this.price = price;
}

public String getName() {
return name;
}

public double getPrice() {
return price;
}

@Override
public String toString() {
Formatter formatting = new Formatter();
return name + ": " + formatting.formatRub(price);
}
}
54 changes: 53 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,58 @@
import android.security.keystore.StrongBoxUnavailableException;

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");

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

while (true) {
System.out.print("Укажите на скольких человек необходимо разделить счёт: ");
if (scanner.hasNextInt()) {
num = scanner.nextInt();
if (num == 1) {
System.out.println("Ошибка! Количество человек = 1. Расчёт не имеет смысла. " +
"Введите количество человек заново.");
} else if (num < 1) {
System.out.println("Ошибка! Количество челвовек должно быть больше 1." +
"Введите количество человек заново.");
} else {
scanner.nextLine();
break;
}
} else {
System.out.println("Ошибка! Количество человек должно быть натуральным числом.");
scanner.nextLine();
}
}

String allItemsList = "";
double totalPrice = 0;


while (true) {
Calculator calculator = new Calculator();
String name = calculator.addName();
double price = calculator.addPrice();

totalPrice += price;
allItemsList = calculator.getAllItemsList(allItemsList, name, price);

System.out.println("Товар успешно добавлен в калькулятор!" +
" Хотите добавить еще один товар? Если да, то введите любой символ, " +
"если нет - введите команду \"Завершить\".");

if (scanner.nextLine().equalsIgnoreCase("Завершить")) {
break;
}
}
scanner.close();

System.out.println("Добавленные товары:\n" + allItemsList);

Formatter formatting = new Formatter();
System.out.println("Cумма к оплате: " + formatting.formatRub(totalPrice / num));
}
}