Pull request Ладика Олега по проектной работе №1#1
Conversation
OLEG-LADIK
commented
Feb 14, 2023
- Использовал классы определения числа гостей (на которых делить счет), для расчета общей суммы чека и вывода списка по чеку, а также форматированного вывода расчета на одного гостя.
src/main/java/Main.java
Outdated
| calc.calculation(total,numberOfGuests); | ||
| } | ||
| } | ||
| class Guests { |
There was a problem hiding this comment.
🍏 Классы можно раскидать по отдельным файлам
src/main/java/Main.java
Outdated
|
|
||
| int numberOfGuests() { | ||
| System.out.println("Введите кол-во гостей, на которых необходимо поделить счет"); | ||
| int numberOfGuests = scan.nextInt(); |
There was a problem hiding this comment.
⚠ Здесь лучше добавить проверку на ввод некорректных данных, как ввод строки, иначе приложение падает с ошибкой
src/main/java/Main.java
Outdated
| Scanner scan = new Scanner(System.in); | ||
| boolean ifWantFinish = true; | ||
| String[] dish = new String[100]; | ||
| int i =0; |
There was a problem hiding this comment.
🍏 Лучше давать именования более осмысленные. Например, можно назвать step, т.е. "шаг"
src/main/java/Main.java
Outdated
| dish[i] = scan.next(); | ||
|
|
||
| System.out.println("Введите цену товара в формате рубли,копейки"); | ||
| expense[i] = scan.nextDouble(); |
There was a problem hiding this comment.
⚠ Также нужно добавить проверку на ввод некорректных данных. Плюс к этому, надо учесть, что стоимость не может быть отрицательной
src/main/java/Main.java
Outdated
| } | ||
| System.out.println("Добавленные товары:"); | ||
| for (int l = 0; l < i; l++) { | ||
| System.out.println((l + 1) + ". " + dish[l] + " Цена " + expense[l] + " рублей"); |
There was a problem hiding this comment.
🍏 Жестко задано слово "рублей", независимо от цены. Т.е. если цена будет 24, то получится 24.0 рублей
Это не критично конечно, можно просто удалить или подкорректировать сообщение, но все же)
src/main/java/Main.java
Outdated
| double checkPerGuest = total / numberOfGuests; | ||
| double roundingCheck = Math.floor(checkPerGuest); | ||
| double roundingCheck2 = roundingCheck - Math.floor(roundingCheck / 100) * 100; | ||
| double roundingCheck3 = roundingCheck - Math.floor(roundingCheck / 10) * 10; | ||
| if(roundingCheck3 ==1&&roundingCheck2 !=11) { | ||
| System.out.println(String.format("Каждый гость должен заплатить %.2f рубль", checkPerGuest)); | ||
| } else if(roundingCheck3 >1&&roundingCheck3<5&roundingCheck2 !=12&roundingCheck2 !=13&roundingCheck2 !=14) { | ||
| System.out.println(String.format("Каждый гость должен заплатить %.2f рубля", checkPerGuest)); | ||
| } else { | ||
| System.out.println(String.format("Каждый гость должен заплатить %.2f рублей", checkPerGuest)); | ||
| } |
There was a problem hiding this comment.
🍏 Расчет выполняется правильно 👍.
Можно было вместо if-then-else использовать switch. Также ты работаешь здесь с double - лучше приводить к типу int, как целочисленному типу
src/main/java/Guests.java
Outdated
| if (number.hasNextInt()) { | ||
| break; |
There was a problem hiding this comment.
⚠ Была же у тебя изначально проверка, что введенное число не должно быть меньше 1. Лучше проверять так, чтобы было введено числовое значение и, хотя бы, не равное 0
| if (scan.hasNextDouble()) { | ||
| break; |
There was a problem hiding this comment.
⚠ Также лучше добавить проверку, что стоимость товара не может быть отрицательной - в прошлой итерации я об этом упомянул в PR. Если ввести -1, то программа продолжит работу и выведет в консоль добавленный товар с стоимостью -1.0 руб, что лучше поправить