Skip to content

Первый вариант программы Calculator - #1

Merged
AlexMargina merged 3 commits into
mainfrom
dev
Feb 7, 2023
Merged

AlexMargina merged 3 commits into
mainfrom
dev

Conversation

@AlexMargina

Copy link
Copy Markdown
Owner

Все строго по заданию, без перехвата ошибок пользователя.

Comment thread src/main/java/Main.java Outdated
System.out.println("Привет Мир");
// 1. Запрашиваем количество людей (с проверкой правильности ввода). Получаем целое число N

int N = amountFriends();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 не критично, но лучше переменные именовать по смыслу их назначения. Например, int countOfFriends или т.п.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

исправил, согласен, показалась незначительной переменной

Comment thread src/main/java/Main.java Outdated
Comment on lines +47 to +50
System.out.println("Ваш общий заказ: \n" + order.dishInOrder);
System.out.println("Общая сумма заказа: " + payRubles(order.costOfTheDish));
System.out.println("Каждый из Вас должен заплатить сегодня по: " + printLineCost);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень информативно. Это хорошо 👍

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо!)

Comment thread src/main/java/Main.java
//Метод вызывается для ввода количества застольных пацанов,с кем делить счет
public static int amountFriends() {
int N;
while (true) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 Касаемо предупреждения от студии - Conditional break inside loop. Студия предлагает использовать do while цикл, как более оптимальное решение.

Здесь можно найти про принцип работы https://metanit.com/java/tutorial/2.6.php

Comment thread src/main/java/Main.java Outdated
Comment on lines +58 to +59
N = scanner.nextInt();

@ilshat-abdulin ilshat-abdulin Feb 6, 2023 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Здесь приложение останавливается с ошибкой, если ввести вместо запрашиваемого количества посетителей, строку, то приложение "падает" с ошибкой. Лучше попробовать обработать.

Там все просто - попробуй использовать методы scanner.hasNextInt()/hasNextFloat() в if else блоке, чтобы исключить падение приложения или try-catch.

Например, if(scanner.hasNextInt()) {
//забираем введенное значение и работаем с ним
} else {
//выводим в консоль сообщение об ошибке
}

И цикл крутится до тех пор, пока не будет введено корректное значение

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил.
Я намерено оставил без проверок ввода пользователя, т.к.не было дано заданием, и ни перехват , ни методы проверки Сканнера не давали еще, поэтому был уверен, что об этом расскажут и приложение будет дорабатываться с учетом нового.
Гугл помог!)

Comment thread src/main/java/Main.java Outdated
Comment on lines +77 to +86
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; // Суммируем

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 Здесь также лучше обработать некорректный ввод. Также думаю, что нужно предусмотреть, сразу после ввода инфы первого товара, вывод в консоль сообщения о том, что можно ввести слово "Завершение", чтобы прекратить ввод данных, т.к. это сразу не очевидно для пользователя

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил, спасибо!

Comment thread src/main/java/Main.java
Comment on lines +94 to +103
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; //Форматируем и возвращаем строку с окончанием рубль - рубля - рублей

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверил. Работает корректно 👍

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо!
Правда Студию приходится запускать только Run With Coverage, от простого Run каждый раз выдает: finished with non-zero exit value 1

@AlexMargina
AlexMargina merged commit 9aa046e into main Feb 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants