Skip to content
This repository was archived by the owner on Nov 21, 2024. It is now read-only.

Seems ok - #1

Open
MonomythConvergence wants to merge 1 commit into
devfrom
ready!
Open

MonomythConvergence wants to merge 1 commit into
devfrom
ready!

Conversation

@MonomythConvergence

Copy link
Copy Markdown
Owner

No description provided.

Comment thread src/main/java/Main.java
while (true) { //очень долго пытался найти решение в практикуме,
try { //но походу готовой сортировки по вводу букв/цифр нет. Позаимствовал try/catch
System.out.println("1.Введите кол-во человек (Целое число >1)"); //из внешних
people = Integer.parseInt(scanner.next()); //ресурсов

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(), который вернет true или false в зависимости, введено ли корректное число или нет. Затем при успешном результате считать число. Это решение можно обыграть, чтобы избавиться от блока try catch

Comment thread src/main/java/Main.java
Scanner scanner = new Scanner(System.in).useDelimiter("\\n");//если бы писал код с 0
System.out.println("2.Подсчёт суммы счёта и деление."); //завел бы scanner в Main
String input;
double price=0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Здесь и на строку ниже студия подсказывает, что "Variable 'price' initializer '0' is redundant". Почему это происходит: это значение не используется нигде до того, как ему присвоят новое. То есть оно просто так полежит в переменной без дела

Comment thread src/main/java/Main.java
while (true) {
try {
System.out.println("Введите цену блюда в рублях (Числа будут округлены до сотых)");
price = Double.parseDouble(scanner.next());

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image
Не работает на дробных числах(

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

image

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Здесь происходит хитрая вещь, связанная с локалью компа. У меня локаль русская, а для нее характерен разделитель в виде запятой. Для английской локали характерна точка. %.2f делает в моем случае через запятую, что и не может по какой-то причине прочитать parseDouble

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

Choose a reason for hiding this comment

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

image
И даже обычные числа из-за этого не принимает(

Comment thread src/main/java/Main.java
System.out.println("Введите цену блюда в рублях (Числа будут округлены до сотых)");
price = Double.parseDouble(scanner.next());
if (price > 0) {
input=String.format("%.2f", price);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

В следующих трех строках происходит странное) Сначала ты получаешь string из double в лице input. Затем ты два раза переводишь его обратно в double) Как минимум можно было бы вынести перевод в double и сделать это один раз

Comment thread src/main/java/Main.java
System.out.println("Введите название блюда №"+count+".");//опции на 0 блюд пользавателю не дам
input=scanner.next();
result="1."+input+" - ";
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.

Один из основных принципов разработки - это не допускать повторений кода. Этот while и следующий практически 1 в 1 идентичны ( за исключением дополнительных действий, но их можно корректно сделать и в одном while). В следующем дз одним из критериев успеха будет отсутствие дублирования кода. Сейчас отличная возможность потренироваться

Comment thread src/main/java/Main.java
String round = String.format("%.2f", costPerPerson); //в следующий раз буду использовать decimal
costPerPerson= Double.parseDouble(round); //даже если мы его не покроем в Практикуме.
if ((costPerPerson*number)<sum) { //т.к. округление вверх без введения Math не сделать, а
while ((costPerPerson*number)<sum) { //делать import того что мы не проходили

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Делать импорт того, что вы не проходил совсем даже неплохо, особенно, если на это нет прямого запрета в тексте задания. Изучать новое всегда приветствуется, особенно, если оно может упростить жизнь. А Math - это базовая вещь, которую можно достать из коробки)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants