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

public class Goods { // Создаем класс со статическими переменными, хранящие сумму заказа и названия товаров
String name;
double price;
static double sum = 0;
static String names = "";
Comment on lines +6 to +7

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Необязательно их было делать static. По хорошему, один объект класса Good должен был соответствовать одному товару, а метод calculator лучше было сделать классом Calculator с методом calculate (названия классов - существительные, названия методов - желательно глаголы).


public Goods(String n, double p) {
price = p;
name = n;
sum += price;
names += "\n" + name;
}

public static void calculator() { // метод для добавления товаров
Scanner scanner = new Scanner(System.in);
String check = "0";
while (check.toLowerCase() != "завершить") {
if (check.toLowerCase().equals("завершить")) break;
else {
String name;
double price = -1;
while (price < 0) {
System.out.println("Введите название товара:");
name = scanner.next();
System.out.println("Введите стоимость товар:");
while (!scanner.hasNextDouble()) {
scanner.next();
System.out.println("Что-то не так, попробуйте еще раз, но с цифрами!");
}
price = scanner.nextDouble();
if (price > 0) {
Goods nnew = new Goods(name, price);
break;
} else {
System.out.println("Неверный ввод! попробуйте еще раз");
}
}
System.out.println("Желаете продолжить? Для выхода введите 'завершить'");
check = scanner.next();
}
}
}
}
58 changes: 56 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,60 @@

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
int persons = countPersons();
Goods.calculator();
double part = Goods.sum / persons;
System.out.println("Добавленные товары:" + Goods.names + "\n");
System.out.println("Сумма товаров " + String.format("%.2f", Goods.sum) + " " + howToWriteRubles(Goods.sum));
System.out.println("Каждый должен заплатить " + String.format("%.2f", part) + " " + howToWriteRubles(part));
}

public static int countPersons() { //метод для подсчета числа посетителей

@nasibullin1412 nasibullin1412 Nov 27, 2023 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏static лишнее здесь, а так же этот метод можно вынести в отдельный класс

Scanner scanner = new Scanner(System.in);
System.out.println("На сколько человек нужно разделить счет?");
int persons = 0;
while (persons <= 1) {
while(!scanner.hasNextInt()){
scanner.next();
System.out.println("Что-то не так, попробуйте еще раз, но с цифрами!");
}
persons = scanner.nextInt();
if (persons > 1) {
break;
} else {
System.out.println("Неверное значение, попробуйте еще раз!");
}
}
return persons;
}


public static String howToWriteRubles(double p){ //метод для определения падежа слова "рубль"
int rubles = (int) (p % 100);
String write = "";

if (rubles >= 11 && rubles <= 19){
write = "рублей";
} else {
rubles %= 10;
switch (rubles) {
case 1:
write = "рубль";
break;
case 2:
case 3:
case 4:
write = "рубля";
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 0:
write = "рублей";
}
}
return write;
}
}