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

public class Calculator {
private ArrayList<Product> products;

public Calculator() {
this.products = new ArrayList<>();
}

public void addProduct(Product product) {
this.products.add(product);
}

public void showProducts() {
System.out.println("Добавленные товары:");
for (int i = 0; i < this.products.size(); i++) {
Product product = this.products.get(i);
System.out.println(product.getName() + " - " + product.getPrice());
}
}

public void showScore(int countPersons) {
double sum = 0;
for (int i = 0; i < this.products.size(); i++) {
sum += this.products.get(i).getPrice();
}

RusCurrencyHelper helper = new RusCurrencyHelper();

System.out.println("\n Общая сумма: " + String.format("%.2f", sum) + helper.getCurrencyString(sum));
double sumForOne = sum / countPersons;
System.out.println("\n С человека: " + String.format("%.2f", sumForOne) + helper.getCurrencyString(sumForOne));
}
}
73 changes: 71 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,75 @@

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

int countPersons = getCountPersons();
Calculator calculator = getCalculatorWithProducts();
calculator.showProducts();
calculator.showScore(countPersons);
}

private static int getCountPersons() {
int countPersons = 0;

do {
System.out.println("На скольких человек нужно разделить счет?");

try {
Scanner scanner = new Scanner(System.in);
countPersons = scanner.nextInt();
if (countPersons <= 1) {
System.out.println("Количество человек должно быть больше одного");
}
} catch (Exception e) {
System.out.println("Некорректное количество человек");
}
} while(countPersons <= 1);

return countPersons;
}

private static Calculator getCalculatorWithProducts() {
Calculator calculator = new Calculator();

do {
String name = getProductName();
double price = getProductPrice();
calculator.addProduct(new Product(name, price));
} while (!isExist());

return calculator;
}

private static String getProductName() {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите название товара");

return scanner.next();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

при использовании этого метода считывается только первое слово. Попробуй использовать метод nextLine()

}

private static double getProductPrice() {
double price = 0;
while (price <= 0) {
try {
System.out.println("Введите стоимость товара");
Scanner scanner = new Scanner(System.in);
price = scanner.nextDouble();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

при использовании сканера хорошим тоном является использование метода .close у сканера, это позволяет избежать возможных утечек памяти

if (price <= 0) {
throw new Exception();
}
} catch (Exception e) {
System.out.println("Некорректная стоимость товара");
}
}

return price;
}

private static boolean isExist() {
Scanner scanner = new Scanner(System.in);
System.out.println("Для выхода введите 'завершить'. Для продолжения - введите любой символ");
String action = scanner.next();

return action.equalsIgnoreCase("завершить");
}
}
17 changes: 17 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
public class Product {
private final String name;
private final double price;

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

public String getName() {
return name;
}

public double getPrice() {
return price;
}
}
13 changes: 13 additions & 0 deletions src/main/java/RusCurrencyHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class RusCurrencyHelper {
public String getCurrencyString(double count) {
int rubles =((int)count) % 10;

String result = switch (rubles) {
case 1 -> "рубль";
case 2, 3, 4 -> "рубля";
default -> "рублей";
};

return " " + result;
}
}