Skip to content

zxc#1

Open
ZXCHMO wants to merge 5 commits intomainfrom
dev
Open

zxc#1
ZXCHMO wants to merge 5 commits intomainfrom
dev

Conversation

@ZXCHMO
Copy link
Copy Markdown
Owner

@ZXCHMO ZXCHMO commented Apr 19, 2023

No description provided.

} No newline at end of file
Calculator sum = new Calculator();
int people;
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(true){
Scanner scanner = new Scanner(System.in);
System.out.println("На сколько людей разделить счет?");
people = 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.

⚠️ Не хватает проверки на некорректный ввод, например, букв или дробных чисел.

}
while(true){
System.out.println("Введите стоимость " + name + ".");
double price = scanner.nextDouble();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Не хватает првоерки на некорректный ввод и приложение падает

i += 1;
sum = sum + price;
String price2 = String.format("%.2f", price);
list = list + i + ". "+ name + " - " + price2 +" "+ formatter.rub +".\n";
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 является неизменяемым объектом, то при каждом сложении строк создаются новые объекты, что расходует память. Для таких случаев лучше использовать StringBuilder


void ruble(double i){
int i2 = (int)Math.floor(i);
switch(i2){
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Не правильное склонение у чисел больше 20
image
Надо проверять последнюю или 2 последних цифры числа, в зависимости от ситуации, чтобы правильно определить склонение. Есть несколько случаев, которые нужно проверить, когда заканчивается на:

  • 0
  • 1
  • 2-4
  • 5-9
  • и исключение, когда 2 цифры в конце надо проверять 11-14

case 64:
case 74:
case 84:
case 94:{
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⏫ Среда разработки предложила немного укороченный вариант

switch (i2) {
    case 21, 31, 41, 51, 61, 71, 81, 91, 1 -> {
        rub = "рубль";
        break;
    }
    case 2, 22, 32, 42, 52, 62, 72, 82, 92, 3, 23, 33, 43, 53, 63, 73, 83, 93, 4, 24, 34, 44, 54, 64, 74, 84, 94 -> {
        rub = "рубля";
        break;
    }
    default -> {
        rub = "рублей";
        break;
    }
}

А вообще, конечно, будет компактнее и читабельнее, если не расписывать все варианты, а проверить взять % 100 и проверить окончание на 11-14, а потом взять % 10 и проверить окончание на 1 и 2-4, получится всего 3 ветки компактно, а в остальных случаях выводить "рублей".

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