Repository navigation
Первый вариант программы Calculator - #1
Conversation
| System.out.println("Привет Мир"); | ||
| // 1. Запрашиваем количество людей (с проверкой правильности ввода). Получаем целое число N | ||
|
|
||
| int N = amountFriends(); |
There was a problem hiding this comment.
🍏 не критично, но лучше переменные именовать по смыслу их назначения. Например, int countOfFriends или т.п.
There was a problem hiding this comment.
исправил, согласен, показалась незначительной переменной
| System.out.println("Ваш общий заказ: \n" + order.dishInOrder); | ||
| System.out.println("Общая сумма заказа: " + payRubles(order.costOfTheDish)); | ||
| System.out.println("Каждый из Вас должен заплатить сегодня по: " + printLineCost); | ||
| } |
There was a problem hiding this comment.
Очень информативно. Это хорошо 👍
| //Метод вызывается для ввода количества застольных пацанов,с кем делить счет | ||
| public static int amountFriends() { | ||
| int N; | ||
| while (true) { |
There was a problem hiding this comment.
🍏 Касаемо предупреждения от студии - Conditional break inside loop. Студия предлагает использовать do while цикл, как более оптимальное решение.
Здесь можно найти про принцип работы https://metanit.com/java/tutorial/2.6.php
| N = scanner.nextInt(); | ||
|
|
There was a problem hiding this comment.
Там все просто - попробуй использовать методы scanner.hasNextInt()/hasNextFloat() в if else блоке, чтобы исключить падение приложения или try-catch.
Например, if(scanner.hasNextInt()) {
//забираем введенное значение и работаем с ним
} else {
//выводим в консоль сообщение об ошибке
}
И цикл крутится до тех пор, пока не будет введено корректное значение
There was a problem hiding this comment.
Исправил.
Я намерено оставил без проверок ввода пользователя, т.к.не было дано заданием, и ни перехват , ни методы проверки Сканнера не давали еще, поэтому был уверен, что об этом расскажут и приложение будет дорабатываться с учетом нового.
Гугл помог!)
| System.out.println("Введите название блюда"); | ||
| dish = scanner.next(); // Считываем название | ||
| if (dish.equalsIgnoreCase("Завершение")) { break; } | ||
| dishInOrder = (dishInOrder + dish + "\n"); // Формируем список блюд | ||
|
|
||
| System.out.println("Введите стоимость"); | ||
| cost = scanner.nextDouble(); // Считываем цену | ||
| if (cost > 0) // Проверяем ввод пользователя. Если не число - не суммируем. Можно и переспросить | ||
| { | ||
| costOfTheDish = costOfTheDish + cost; // Суммируем |
There was a problem hiding this comment.
🍏 Здесь также лучше обработать некорректный ввод. Также думаю, что нужно предусмотреть, сразу после ввода инфы первого товара, вывод в консоль сообщения о том, что можно ввести слово "Завершение", чтобы прекратить ввод данных, т.к. это сразу не очевидно для пользователя
| public static String payRubles(double partPayment) { | ||
| double PayInt; | ||
| PayInt = Math.floor(partPayment); | ||
| String endRub = "рубль"; //Обьявляем переменную для окончания и задем значение по умолчанию | ||
| if (PayInt % 10 == 0 || PayInt % 10 > 4 || (PayInt % 100 > 10 && PayInt % 100 < 20)) { | ||
| endRub = "рублей"; | ||
| } else if (PayInt % 10 > 1 && PayInt % 10 < 5) { | ||
| endRub = "рубля"; | ||
| } | ||
| return String.format("%.2f", partPayment) + " " + endRub; //Форматируем и возвращаем строку с окончанием рубль - рубля - рублей |
There was a problem hiding this comment.
Спасибо!
Правда Студию приходится запускать только Run With Coverage, от простого Run каждый раз выдает: finished with non-zero exit value 1
…ьзователя в классе Scanner
Все строго по заданию, без перехвата ошибок пользователя.