Repository navigation
Conversation
| int numberOfPersons = dataInput.numberOfPeople(scanner); | ||
| // Ввод товара | ||
| ArrayList<LineOfBill> listOfProducts = dataInput.productEntry(scanner); | ||
| scanner.close(); // Закрыть сканер |
There was a problem hiding this comment.
👏 Круто, что не забываешь завершить работу со сканнером
| // Класс для хранения данных строки счета | ||
| public class LineOfBill { | ||
| private String name; | ||
| private float prise; |
There was a problem hiding this comment.
🍏 Закралась опечатка)
| private float prise; | |
| private float price; |
| @@ -0,0 +1,15 @@ | |||
|
|
|||
| // Класс для хранения данных строки счета | |||
| public class LineOfBill { | |||
There was a problem hiding this comment.
🍏 Рекомендую назвать класс, например, Product. Это пригодится при масштабировании, если нам понадобится использовать данные не только для счета, но и для учета проданных товаров/блюд, к примеру
| // Ввод кол-ва человек | ||
| public int numberOfPeople (Scanner scanner) { | ||
| int col; | ||
| String s = "\nВведите целое число больше 1.", s1 = "На сколько человек необходимо разделить счёт:"; |
There was a problem hiding this comment.
🍏 Рекомендую давать переменным более развернутые названия, чтобы в любой строке кода легко было понять, с чем мы работаем.
Также в java принято каждую переменную писать в отдельной строке, так их проще читать:
https://www.oracle.com/java/technologies/javase/codeconventions-declarations.html
Неизменяемые поля можно сразу объявить константами, тогда они будут созданы один раз во время компиляции:
https://www.baeldung.com/java-constants-good-practices
| listOfProducts.add(lb); // и добавление его в массив | ||
| System.out.println("Товар успешно добавлен."); | ||
| System.out.println("Хотите добавить еще один товар?\nДля завершения процесса добавления товаров введите \"Завершить\":"); | ||
| } while (!scanner.next().equalsIgnoreCase("Завершить")); |
There was a problem hiding this comment.
🍏 Можно вынести слово "Завершить" в константу. Тогда если в будущем мы захотим заменить завершающую команду на другое слово, то это нужно будет сделать в одном месте
There was a problem hiding this comment.
Разумно. Внесу изменения
| if (col < 0) { | ||
| System.out.println("Это отрицательное число!" + s); | ||
| } else if (col == 0) { | ||
| System.out.println("На 0 делить нельзя!" + s + "\n" + s1); |
There was a problem hiding this comment.
🍏 При печати в памяти будут создаваться промежуточные строки из-за множественного использования оператора "+". Можно использовать StringBuilder, который сформирует только результирующую строку, System.out.printf или String.format().
https://habr.com/ru/articles/260767/
There was a problem hiding this comment.
Согласен. Внесу изменения
| } | ||
| // Проверка - у цены должно быть две цифры после десятичной точки | ||
| String[] strPrice = String.valueOf(price).split("\\.", 2); // Разбиваем строку на массив из 2-х строк: целая часть и дробная | ||
| if (strPrice[1].length() > 2) { // Если в дробной части больше 2 знаков |
There was a problem hiding this comment.
🍏 число 2 можно вынести в константу и дать ему имя, чтобы всегда было понятно, почему у него именно такая величина
There was a problem hiding this comment.
Не совсем понял о какой 2 идет речь.
В split 2 означает, что строка будет разбита на два массива. Там всегда будет двойка.
А в if без проблем поменяю
| } | ||
| System.out.println(String.format("---------------------" + "Итого по счету: %.2f\n", sumBill)); // Подчеркивание и вывод итоговой суммы по счету | ||
| double fromEveryPerson = sumBill / numberOfPersons; | ||
| System.out.println(String.format("\nГоспода, с Вас по: %.2f " + rubles(fromEveryPerson) + "%n", fromEveryPerson)); // Вывод доли счета |
There was a problem hiding this comment.
Еще можно вот так:
| System.out.println(String.format("\nГоспода, с Вас по: %.2f " + rubles(fromEveryPerson) + "%n", fromEveryPerson)); // Вывод доли счета | |
| System.out.printf("\nГоспода, с Вас по: %.2f %s%n", fromEveryPerson, rubles(fromEveryPerson)); |
There was a problem hiding this comment.
Я знаю, просто так нас учили. Исправлю
|
Спасибо за замечания. Внес все изменения. Отправляю на проверку |
Написал этот код, четко следуя заданию, хотя считаю что алгоритм можно улучшить