Repository navigation
Conversation
| class Product { | ||
| String name = "без названия"; | ||
| double cost = 0.00f; | ||
| Product(String name, double cost) { | ||
| this.name = name; | ||
| this.cost = cost; | ||
| } | ||
| } |
There was a problem hiding this comment.
Отлично, что ты организовал логику программы в отдельные классы. Также стоит рассмотреть возможность создания отдельного файла для каждого класса. Это улучшит структуру проекта и облегчит навигацию по коду.
| if (remainderOf100 == 11 || remainderOf100 == 12 || remainderOf100 == 13 || remainderOf100 == 14) | ||
| return "рублей"; | ||
| if (remainderOf10 == 1) | ||
| return "рубль"; | ||
| if (remainderOf10 == 2 || remainderOf10 == 3 || remainderOf10 == 4) | ||
| return "рубля"; | ||
| else | ||
| return "рублей"; | ||
| } |
There was a problem hiding this comment.
Вместо проверки каждого значения отдельно можно проверить диапазон. Например, для первого условия:
if (remainderOf100 >=11 && remainderOf100 <= 14){
...
}
| Scanner scanner = new Scanner(System.in); | ||
| String goodName = scanner.nextLine(); | ||
| System.out.println("Введите стоимость товара:"); | ||
| scanner = new Scanner(System.in); |
There was a problem hiding this comment.
Каждый раз, когда ты создаешь новый объект Scanner для считывания ввода пользователя, это приводит к созданию нового потока чтения с клавиатуры System.in. Пересоздание Scanner может привести к проблемам, таким как потеря данных в буфере ввода или непредсказуемое поведение при считывании данных. Кроме того, это может быть неэффективным с точки зрения использования ресурсов, поскольку создание нового объекта Scanner каждый раз потребляет дополнительную память и ресурсы процессора. Вместо этого лучше создать один объект Scanner и использовать его для всего ввода с клавиатуры.
| if (numberPeople < 2) { | ||
| if (numberPeople == 1) | ||
| System.out.println("Количество человек, введённых пользователем, равно 1. Нечего делить. Попробуйте снова:"); | ||
| else | ||
| System.out.println("Некорректное значение для подсчёта. Попробуйте ещё раз:"); | ||
| } else | ||
| return numberPeople; |
There was a problem hiding this comment.
Для устранения лишней вложенности можно воспользоваться конструкцией if() {} else if:
if (numberPeople == 1) {
System.out.println("");
} else if (numberPeople < 1) {
System.out.println("");
} else {
return numberPeople;
}
|
|
||
| double payFromEveryPerson = sumCost / numberPeople; | ||
| String wordRuble = Formater.getWordRuble(payFromEveryPerson); | ||
| System.out.println(String.format("Каждый человек должен заплатить \"%.2f\" %s.", payFromEveryPerson, wordRuble)); |
There was a problem hiding this comment.
Вместо использования функции format, которая создает новую отформатированную строку, можно воспользоваться функцией printf, которая позволяет форматировать вывод напрямую при его осуществлении:
System.out.printf("Каждый человек должен заплатить \"%.2f\" %s.\n", payFromEveryPerson, wordRuble);
| String name = "без названия"; | ||
| double cost = 0.00f; |
There was a problem hiding this comment.
Здорово, что ты задал объекту Product значения по умолчанию. Однако, в данном случае, конструктор твоего объекта не позволит создать его без инициализации его свойств. Чтобы это исправить, можно создать в классе Product перегруженный конструктор без параметров:
class Product {
String name = "без названия";
double cost = 0.00f;
// Пустой конструктор, который создаст объект с значениями по умолчанию
Product() {}
Product(String name, double cost) {
this.name = name;
this.cost = cost;
}
}
| while (true) { | ||
| System.out.println("Введите название товара:"); | ||
| Scanner scanner = new Scanner(System.in); | ||
| String goodName = scanner.nextLine(); |
There was a problem hiding this comment.
Сейчас приложение позволяет добавить товар с пустым именем или именем, состоящим только из пробелов. Чтобы исправить это, можно использовать функцию isBlank для проверки пустоты строки и trim для удаления начальных и конечных пробелов:
if(goodName.isBlank()){
/* повторный ввод */
}
Product product = new Product(goodName.trim(), goodCost);
There was a problem hiding this comment.
Что делать, если java не видит метод isBlank()?
Делитель счёта.