Repository navigation
Conversation
AntaOtk
commented
Nov 25, 2022
- В описании задачи не говорилось о том, что количество людей может быть не целым числом, в связи с этим не стала делать на это проверку при вводе.
- Не поняла из условия, как запрашивать товар, поэтому реализовала через 2 запроса. и в случае ошибки прошу вводить товар заново с 0.
| int n; | ||
| while (true) { | ||
| System.out.println("На скольких человек необходимо разделить счёт"); | ||
| n = scanner.nextInt(); |
There was a problem hiding this comment.
Пользователь может ввести на вопрос про количество человек вместо чисел строки, и приложение упадет. Лучше такого не допускать, а обрабатывать. Можно использовать методы scanner.hasNextInt() или try-catch
| boolean err = false; | ||
| if (add2.length() > 3) { | ||
| for (int i = 0; i < add2.length(); i++) { | ||
| if ((!Character.isDigit(add2.charAt(i))) && (i != add2.length() - 3)) { |
There was a problem hiding this comment.
Можно использовать метод scanner.hasNextFloat() и потом scanner.nextFloat()
| System.out.println("введите имя"); | ||
| add1 = scanner.nextLine(); | ||
| System.out.println("введите стоимость"); | ||
| add2 = scanner.nextLine(); |
There was a problem hiding this comment.
Лучше давать более понятные имена, например, people, goodName, cost
| } | ||
| if ((add2.charAt(add2.length() - 3) == '.') && !err) { | ||
| productsList.add(new Product(add1, Float.parseFloat(add2))); | ||
| System.out.println("Товар успешно добавлен. Хотите ввсти ещё товар?"); |
There was a problem hiding this comment.
Можно дописать "Введи Завершить, чтобы закончить ввод", иначе пользователь не поймёт, что следует ввести для выхода
| System.out.println("введите стоимость"); | ||
| add2 = scanner.nextLine(); | ||
| boolean err = false; | ||
| if (add2.length() > 3) { |
There was a problem hiding this comment.
Из-за этого условия стоимость просто целым числом, например, 24, не принимается
| String end = "завершить"; | ||
| String add1; | ||
| String add2; | ||
| for (; ; ) { |
| System.out.println("Добавленные товары:"); | ||
| products.writeNameList(); | ||
| int rub = (int) output; | ||
| if ((rub % 10 == 1) && (rub / 10 != 1)) { |
There was a problem hiding this comment.
Выражение rub % 10 считается несколько раз, можно посчитать его один раз, записать в переменную и использовать ее
Перед проверкой rub / 10 != 1 лучше взять rub%100, то есть отбросить все цифры, кроме последних двух, чтобы проверять также и 119, 212 и т.д.
| } else if ((rub % 10 >= 2) && (rub % 10 <= 4) && (rub / 10 != 1)) { | ||
| System.out.println(String.format("%.2f", output) + " рубля"); | ||
| } else { | ||
| System.out.println(String.format("%.2f", output) + " рублей"); |
There was a problem hiding this comment.
Код System.out.println(String.format("%.2f", output) + " рублей"); повторяется в каждой ветке, кроме слова рубль, лучше код вынести после if-else, оставив в нем только определение слова
|
@MagicUnderHood , спасибо большое за ревью. поправила код согласно советам. |