Skip to content
Closed
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
10 changes: 10 additions & 0 deletions src/main/java/Item.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
public class Item {
final String name;
final double price;

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

}
77 changes: 75 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,79 @@
import java.util.Locale;
import java.util.Scanner;

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

final String MSG_INPUT_GOOD = "Введите название товара:";
final String MSG_GOODS_ADDED = "Товар добавлен.";
final String MSG_REQUEST_CONTINUE = "Вы хотите добавить еще товар? (введите любое слово чтобы продолжть или введите 'Завершить' чтобы закончить.";
final String COMMAND_FINISH = "Завершить";

int payersCount = getPayersCount();
MyBuscket myBuscket = new MyBuscket(payersCount);

Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println(MSG_INPUT_GOOD);
String itemName = scanner.next();
myBuscket.addItem(itemName, getItemPrice());
System.out.println(MSG_GOODS_ADDED);

System.out.println(MSG_REQUEST_CONTINUE);
if (scanner.next().equalsIgnoreCase(COMMAND_FINISH)) {
break;
}
}
myBuscket.printItems();
myBuscket.countPayments();
}

static int getPayersCount() {

final String MSG_INPUT_COUNT_PAYERS = "На сколько человек разделить счет? (введите целое число больше 1)";
final String ERR_ONE_PAYER = "Ошибка! Нет смысла делить счет на одного человека.";
final String ERR_NO_PAYERS = "Ошибка! Вы ввели меньше одного человека.";
final String ERR_INCORRECT_INPUT = "Ошибка! Требуется ввести целое число.";

Scanner scanner = new Scanner(System.in);
while (true) {
try {
System.out.println(MSG_INPUT_COUNT_PAYERS);
int payersCount = scanner.nextInt();
if (payersCount > 1) {
return payersCount;
} else if (payersCount == 1) {
System.out.println(ERR_ONE_PAYER);
} else {
System.out.println(ERR_NO_PAYERS);
}
} catch (Exception e) {
scanner.next();
System.out.println(ERR_INCORRECT_INPUT);
}
}
}

static double getItemPrice() {

final String MSG_INPUT_PRICE = "Введите стоимость товара:";
final String ERR_NEGATIVE_PRICE = "Ошибка! Стоимость должна быть больше нуля.";
final String ERR_INCORRECT_INPUT = "Ошибка! Требуется ввести число.";

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
while (true) {
try {
System.out.println(MSG_INPUT_PRICE);
double itemPrice = scanner.nextDouble();
if (itemPrice > 0) {
return itemPrice;
} else {
System.out.println(ERR_NEGATIVE_PRICE);
}
} catch (Exception e) {
scanner.next();
System.out.println(ERR_INCORRECT_INPUT);
}
}
}
}
}
50 changes: 50 additions & 0 deletions src/main/java/MyBuscket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import java.util.ArrayList;

public class MyBuscket {
int payersCount;
ArrayList<Item> items = new ArrayList<>();

MyBuscket(int count) {
payersCount = count;
}

public void addItem(String name, double price) {
items.add(new Item(name, price));
}

public void printItems() {
System.out.println("Добавленные товары:");
for (Item item : items) {
System.out.println(item.name + " по цене " + item.price);
}
}

public void countPayments() {
double res = 0;
for (Item item : items) {
res += item.price;
}
res = res / payersCount;

System.out.print("Каждый человек должен заплатить: " + String.format("%.2f", res));

int resInt = (int) res;

if (resInt % 100 >= 11 && resInt % 100 <= 19) {
System.out.print(" рублей");
} else {
switch (resInt % 10) {
case (1):
System.out.print(" рубль");
break;
case (2):
case (3):
case (4):
System.out.print(" рубля");
break;
default:
System.out.print(" рублей");
}
}
}
}