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
25 changes: 25 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
public class Calculator {
private String result = "";
private float sum;
public String getResult() {
return result;
}

public float getSum() {
return sum;
}

public void showRequest() {
System.out.println("Введите название товара и его стоимость.\nСтоимость должна быть в формате \"рубли,копейки\", например 10,45 или 11,40");
}

public void addProduct(Product product) {
result += product.getName() + "\n";
calculate(product);
}

public void calculate(Product product) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Привет. Этот метод можно сделать приватным, потому что он используется только в классе Calculator. Не критично.

sum += product.getPrice();
}

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

private final float sum;

public Formatter(float sum) {
this.sum = sum;
}

public String getFormattedString() {
int i = (int) sum;

String messageTemplate = "%.2f %s";
if (i < 2) {
return String.format(messageTemplate, this.sum, "рубль");
} else if (i < 5) {
return String.format(messageTemplate, this.sum, "рубля");
} else {
return String.format(messageTemplate, this.sum, "рублей");
}
}


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

public class MScanner {
private int peopleCount;
private Scanner scanner;
private final Calculator calculator;

public MScanner(Calculator calculator) {
scanner = new Scanner(System.in);
this.calculator = calculator;
}

public void setPeopleCount() {
System.out.println("На скольких человек необходимо разделить счёт? \nВведите значение:");
boolean isNumber = false;
while (!isNumber) {
if (scanner.hasNextInt()) {
peopleCount = scanner.nextInt();
if (peopleCount < 1) {
System.out.println("Это некорректное значение для подсчёта. \nВведите значение заново.");
scanner = new Scanner(System.in);
} else {
isNumber = true;
}
} else {
System.out.println("Это некорректное значение для подсчёта. Введите число");
scanner = new Scanner(System.in);
}
}
}

public void setPrice() {
String complete;
do {
System.out.println("Введите название товара.");
String name = scanner.next();
System.out.println("Введите стоимость товара.");
float price = getPrice();
Product product = new Product(name, price);
calculator.addProduct(product);
System.out.println("Введите любой символ что бы продолжить или введите \"Завершить\" что бы ЗАВЕРШИТЬ");
complete = scanner.next();
} while (!complete.equalsIgnoreCase("Завершить"));
}

private float getPrice() {
float price = 0;
boolean isFloat = false;
do {
if (scanner.hasNextFloat()){
price = scanner.nextFloat();
if(price <= 0) {
System.out.println("Стоимость не может быть отрицательной или нулевой. Введите стоимость заново.");
scanner = new Scanner(System.in);
} else {
isFloat = true;
}
} else {
System.out.println("Не верный формат ввода. Введите в формате рубли,копейки, например 10,45");
scanner = new Scanner(System.in);
}
} while (!isFloat);

return price;
}

public int getPeopleCount() {
return peopleCount;
}
}
15 changes: 13 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Calculator calculator = new Calculator();
MScanner mScanner = new MScanner(calculator);
int peopleCount;

mScanner.setPeopleCount();
peopleCount = mScanner.getPeopleCount();
calculator.showRequest();
mScanner.setPrice();

float endPrice = calculator.getSum() / peopleCount;
Formatter formatter = new Formatter(endPrice);

System.out.println("Добавленные товары:\n" + calculator.getResult() + "Сумма, которую должен заплатить каждый поровну: "+ formatter.getFormattedString());
}
}
19 changes: 19 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
public class Product {
private final String name;

public String getName() {
return name;
}

public float getPrice() {
return price;
}

private final float price;

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

}