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
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ dependencyResolutionManagement {
mavenCentral()
}
}
rootProject.name = "BillCalculator"
rootProject.name = "Java-Module-Project"
140 changes: 140 additions & 0 deletions src/main/java/InvoiceCalculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
import java.util.ArrayList;
import java.util.Scanner;

public class InvoiceCalculator {
protected ArrayList<Product> products = new ArrayList<>();
protected int countUsers;

public void start() {
this.requestCountUsers();
this.addProducts();
this.printProducts();
this.printResults();
}

public void requestCountUsers() {
Scanner scanner = new Scanner(System.in);
System.out.println("На скольких человек необходимо разделить счёт?");

String input;
while (true) {
input = scanner.nextLine();
if (isInt(input) && Integer.parseInt(input) > 1) {
break;
} else {
System.out.println("Кол-во должно быть больше 1");
System.out.println("Повторите ввод:");
}
}

this.countUsers = Integer.parseInt(input);
}

public void addProducts() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Добавьте новый товар или введите \"Завершить\"");
String productTitle;
double productPrice;
String input;

System.out.println("Введите название товара:");
input = scanner.nextLine();
if (checkEnd(input)) {
break;
}
productTitle = input;

while (true) {
System.out.println("Введите цену товара:");
input = scanner.nextLine();
if (isDouble(input)) {
productPrice = Double.parseDouble(input);
break;
}
System.out.println("Некорректное значение");
}

Product product = new Product(productTitle, productPrice);
this.products.add(product);
}
}

public void printProducts() {
System.out.printf("%n -=-=-=-=-=-=-=- %n");

if (this.products.size() == 0) {
System.out.println("Список товаров пуст...");
} else {
double sum = 0;
System.out.println("Добавленные товары:");
for (int i = 0; i < this.products.size(); i++) {
Product product = this.products.get(i);
System.out.printf("%d) %s%n", i + 1, product);
sum += product.price;
}
System.out.printf("Всего товаров: %s шт. на сумму %.2f%n", this.products.size(), sum);
}
}

public double getAvgSum() {
double sum = 0;
if (this.products.size() == 0) {
return 0;
} else {
for (int i = 0; i < this.products.size(); i++) {
sum += this.products.get(i).price;
}
return sum / this.countUsers;
}
}

public String getRubAddition(double sum) {
String rubAddition = "рублей";
int sumInt = (int) sum;
int preLastDigit = sumInt % 100 / 10;
if (preLastDigit == 1) {
return rubAddition;
}

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

public void printResults() {
double avgSum = this.getAvgSum();
String getRubAddition = this.getRubAddition(avgSum);
System.out.printf("Итого: %.2f %s на человека%n", avgSum, getRubAddition);
}

public static boolean isInt(String input) throws NumberFormatException {
try {
Integer.parseInt(input);
return true;
} catch (NumberFormatException e) {
return false;
}
}

public static boolean isDouble(String input) throws NumberFormatException {
try {
Double.parseDouble(input);
return true;
} catch (NumberFormatException e) {
return false;
}
}

public static boolean checkEnd(String input) {
return "завершить".equals(input.trim().toLowerCase());
}

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

class Main {
public static void main(String[] args) {
// ваш код начнется здесь
InvoiceCalculator invoiceCalculator = new InvoiceCalculator();
invoiceCalculator.start();
}
}
13 changes: 13 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class Product {
String title;
double price;

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

public String toString() {
return String.format("%s: %.2f", title, price);
}
}