Skip to content

Создаю pull request#1

Open
SomnyMosh wants to merge 3 commits intomainfrom
dev
Open

Создаю pull request#1
SomnyMosh wants to merge 3 commits intomainfrom
dev

Conversation

@SomnyMosh
Copy link
Copy Markdown
Owner

No description provided.

amount = 0;
sum = 0.0;
System.out.println("На скольких человек необходимо разделить счёт?");
humans = scanner.nextInt();
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

System.out.println("Введите значение заново?");
humans = scanner.nextInt();
}
while (!(s.equals("Завершить"))) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Эта проверка !(s.equals("Завершить")) не будет иметь эффекта для цикла, т.к. такая же проверка производится внутри цикла:

if((s.equals("Завершить"))){
break;
}

Можно cделать так - while(true)

И, кстати, я тебе рекомендую вместо equals использовать equalsIgnoreCase, т.к. при equals надо учитывать регистр первого символа, в случае с equalsIgnoreCase - можно вводить "завершить" или "Завершить" и проверка будет пройдена

Comment on lines +38 to +39
d = scanner.nextDouble();
price.add(d);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠ Здесь тоже лучше обработать ввод корректного значения

Comment on lines +47 to +48
System.out.println("Цена: "+price.get(i)+" рублей");
sum = Double.sum(sum, (Double) price.get(i));
Copy link
Copy Markdown

@ilshat-abdulin ilshat-abdulin Feb 10, 2023

Choose a reason for hiding this comment

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

⚠ Лучше выводить слово рубль с правильным окончанием в зависимости от суммы, т.е. если результат будет 2, то в консоль будет выведено 2,00 рублей.
Для правильной обработки окончания нужно учесть округленное в меньшую сторону значение без дробной части, и на что оно оканчивается: 1 - "рубль", 2-4 - "рубля", 5-9 (и 0) - "рублей". Плюс учесть, что для чисел 11-19 - "рублей" - для этого стоит проверять, что <число> % 100 между 11 и 19 включительно находится

Comment on lines +50 to +53
System.out.println();
System.out.println("Сумма: "+sum+" рублей");
System.out.println();
System.out.println("На одного человека: "+(sum/humans)+" рублей");
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Очень информативный вывод 👍

Comment on lines +16 to +17
items = new ArrayList<String>();
price = new ArrayList<Double>();
Copy link
Copy Markdown

@ilshat-abdulin ilshat-abdulin Feb 13, 2023

Choose a reason for hiding this comment

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

🍏 В данном случае, можно сразу присвоить new ArrayList() при объявлении переменных

Comment on lines +18 to +19
double d=0.0;
String s = "Что-то";
Copy link
Copy Markdown

@ilshat-abdulin ilshat-abdulin Feb 13, 2023

Choose a reason for hiding this comment

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

🍏 Сходу не понять по названиям, для чего эти переменные. Лучше стараться именовать осмысленными, но краткими названиями

price = new ArrayList<Double>();
double d=0.0;
String s = "Что-то";
amount = 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.

🍏 Выше ноль для amount уже присвоен.

Comment on lines +46 to +54
while (!(bPrice)){
try{
d = scanner.nextDouble();
bPrice=true;
} catch (InputMismatchException ex) {
System.out.println("Вы не ввели численное значение.");
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.

🍏 Использование такого рода флагов, как bPrice, полезно. Но здесь кажется лишним. Все и так работает, если обойтись без неё, просто объявив while(true). Это было бы необходимо, если бы были какие-то промежуточные шаги цикла, на которых не нужен ввод цены продукта.

Аналогично, использование bPrice выше при вводе количества гостей, также выглядит излишним

В общем тут как удобно, но лучше стараться делать как проще)

System.out.println("На одного человека: "+(yeah/humans)+rU(yeah/humans));
}
String rU(double eternal){
this.round=(int) eternal;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🍏 Можно обойтись локальной переменной, объявленной внутри метода

Comment on lines +90 to +91
if(this.round%100==11||this.round%100==12||this.round%100==13||this.round%100==14||this.round%100==15||this.round%100==16||this.round%100==17||this.round%100==18||this.round%100==19){
return" рублей";
Copy link
Copy Markdown

@ilshat-abdulin ilshat-abdulin Feb 13, 2023

Choose a reason for hiding this comment

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

🍏 Работает 👍
Можно еще проще - вычислить предпоследний знак, т.е. число 1 от 114.
Остаток от деления на 100 поделить на 10 (остаток от деления на 10 будет отброшен) и проверить на равенство 1.

Comment on lines +93 to +98
if(round%10==1){
return " рубль";
}else if(round%10==2||round%10==3||round%10==4){
return " рубля";
}else{
return " рублей";
Copy link
Copy Markdown

@ilshat-abdulin ilshat-abdulin Feb 13, 2023

Choose a reason for hiding this comment

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

🍏 Такую цепочку из if-then-else можно заменить на switch

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.

3 participants