Repository navigation
Conversation
| String result = String.format("%.2f", sumMain); | ||
| int floor = (int) Math.floor(sumMain); | ||
| String a = null; | ||
| if (floor % 100 == 11) { |
There was a problem hiding this comment.
Данный блок кода лучше немного переписать: представь, что у нас не около 15 вариантов, как в этом коде, а порядка 100. Перечисляя их все, мы сделаем код абсолютно непонятным. В этом случае мы можем заменить блок кода if (floor % 100 == 11) { a = "рублей"; } else if (floor % 100 == 12) { a = "рублей"; } else if (floor % 100 == 13) { a = "рублей"; } else if (floor % 100 == 14) { a = "рублей"; }
на if (floor % 100 >= 11 && floor % 100 <=14 ) { a = "рублей"; }.
Те же самые преобразования мы можем сделать в тех блоках, где проверяется остаток деления на 10 и используются одинаковые строки.
|
|
||
| public static void main(String[] args) { | ||
| System.out.println("Hello world!"); | ||
| Scanner scanner = new Scanner(System.in); |
There was a problem hiding this comment.
некритичное замечание: хорошей практикой является делать вызов scanner.close() после того, как сканнер больше не используется. Это необходимо для того, что бы этот объект не потреблял ресурсы, тогда когда это уже не требуется.
| String result = String.format("%.2f", sumMain); | ||
| int floor = (int) Math.floor(sumMain); | ||
| String a = null; | ||
| if (floor % 100 == 11) { |
There was a problem hiding this comment.
Некритичное замечание: метод main получился очень большим и содержит много строк кода. Его можно разделить на другие методы, например отдельно выделить метод String formatPrice(int), который будет выводить стоимость вместе со словом "рубль" в нужной форме. Или же, как рекомендуется в задании, выделить отдельный класс Класс Форматтер, содержащий метод получения слова рубль в правильном падеже и метод для округления.
| static double sum = 0; | ||
| static double productPrice; | ||
| static void productCount() { | ||
| Scanner scanner = new Scanner(System.in); |
There was a problem hiding this comment.
Некритично: то же самое замечание по поводу Scanner: лучше вызвать close() после окончания использования сканнера для высвобождения ресурсов системы.
| try { | ||
| productPrice = scanner.nextDouble(); | ||
| }catch (InputMismatchException b){ | ||
| System.out.println("Не целое число"); |
There was a problem hiding this comment.
Некритично: неправильное сообщение, стоимость может быть вещественным значением. При этом проверка работает корректно.
| System.out.println("Товар добавлен!"); | ||
| sum = sum + productPrice; | ||
| System.out.println("Хотите добавить еще товар? (Введите \"Завершить\" ,чтобы завершить процесс добавления товаров.)"); | ||
| String addProduct2 = scanner.next(); |
There was a problem hiding this comment.
некритичное замечание: обрати, пожалуйста, внимание в будущем, на то, какие имена ты даешь переменным. Хорошим тоном считается использовать имена существительные ( что?) или словосочетания с существительными в качестве имен для переменных, а не глаголы( действия). Например, переменная addProduct2 содержит в себе значение введеного пользователем продукта. Ее можно назвать, например, productInput.
| a = "рубля"; | ||
| } else if (floor % 10 >= 5 && floor % 10 <= 8) { | ||
| a = "рублей"; | ||
| }else if (floor % 9 == 0) { |
There was a problem hiding this comment.
некритичное замечание: кажется, что здесь опечатка и имелось ввиду floor % 10 ==9? В этом случае можно было изменить предыдущую ветку сравнеия и убрать эту : else if (floor % 10 >= 5 && floor % 10 <=9) { a = "рублей"; }
№1