Repository navigation
Seems ok - #1
Seems ok#1MonomythConvergence wants to merge 1 commit into
Conversation
| while (true) { //очень долго пытался найти решение в практикуме, | ||
| try { //но походу готовой сортировки по вводу букв/цифр нет. Позаимствовал try/catch | ||
| System.out.println("1.Введите кол-во человек (Целое число >1)"); //из внешних | ||
| people = Integer.parseInt(scanner.next()); //ресурсов |
There was a problem hiding this comment.
Можно использовать scanner.hasNextInt(), который вернет true или false в зависимости, введено ли корректное число или нет. Затем при успешном результате считать число. Это решение можно обыграть, чтобы избавиться от блока try catch
| Scanner scanner = new Scanner(System.in).useDelimiter("\\n");//если бы писал код с 0 | ||
| System.out.println("2.Подсчёт суммы счёта и деление."); //завел бы scanner в Main | ||
| String input; | ||
| double price=0; |
There was a problem hiding this comment.
Здесь и на строку ниже студия подсказывает, что "Variable 'price' initializer '0' is redundant". Почему это происходит: это значение не используется нигде до того, как ему присвоят новое. То есть оно просто так полежит в переменной без дела
| while (true) { | ||
| try { | ||
| System.out.println("Введите цену блюда в рублях (Числа будут округлены до сотых)"); | ||
| price = Double.parseDouble(scanner.next()); |
There was a problem hiding this comment.
Здесь происходит хитрая вещь, связанная с локалью компа. У меня локаль русская, а для нее характерен разделитель в виде запятой. Для английской локали характерна точка. %.2f делает в моем случае через запятую, что и не может по какой-то причине прочитать parseDouble
There was a problem hiding this comment.
Придется придумать самостоятельно, как обойти вот такие места
| System.out.println("Введите цену блюда в рублях (Числа будут округлены до сотых)"); | ||
| price = Double.parseDouble(scanner.next()); | ||
| if (price > 0) { | ||
| input=String.format("%.2f", price); |
There was a problem hiding this comment.
В следующих трех строках происходит странное) Сначала ты получаешь string из double в лице input. Затем ты два раза переводишь его обратно в double) Как минимум можно было бы вынести перевод в double и сделать это один раз
| System.out.println("Введите название блюда №"+count+".");//опции на 0 блюд пользавателю не дам | ||
| input=scanner.next(); | ||
| result="1."+input+" - "; | ||
| while (true) { |
There was a problem hiding this comment.
Один из основных принципов разработки - это не допускать повторений кода. Этот while и следующий практически 1 в 1 идентичны ( за исключением дополнительных действий, но их можно корректно сделать и в одном while). В следующем дз одним из критериев успеха будет отсутствие дублирования кода. Сейчас отличная возможность потренироваться
| String round = String.format("%.2f", costPerPerson); //в следующий раз буду использовать decimal | ||
| costPerPerson= Double.parseDouble(round); //даже если мы его не покроем в Практикуме. | ||
| if ((costPerPerson*number)<sum) { //т.к. округление вверх без введения Math не сделать, а | ||
| while ((costPerPerson*number)<sum) { //делать import того что мы не проходили |
There was a problem hiding this comment.
Делать импорт того, что вы не проходил совсем даже неплохо, особенно, если на это нет прямого запрета в тексте задания. Изучать новое всегда приветствуется, особенно, если оно может упростить жизнь. А Math - это базовая вещь, которую можно достать из коробки)



No description provided.