Conversation
| } No newline at end of file | ||
| Calculator sum = new Calculator(); | ||
| int people; | ||
| while(true){ |
There was a problem hiding this comment.
⏫ Я бы сделал чтение количества людей отдельным методом, раз оно так хорошо отделяется. И тем самым можно разгрузить основнйо метод
src/main/java/Main.java
Outdated
| while(true){ | ||
| Scanner scanner = new Scanner(System.in); | ||
| System.out.println("На сколько людей разделить счет?"); | ||
| people = scanner.nextInt(); |
There was a problem hiding this comment.
src/main/java/Calculator.java
Outdated
| } | ||
| while(true){ | ||
| System.out.println("Введите стоимость " + name + "."); | ||
| double price = scanner.nextDouble(); |
There was a problem hiding this comment.
src/main/java/Calculator.java
Outdated
| i += 1; | ||
| sum = sum + price; | ||
| String price2 = String.format("%.2f", price); | ||
| list = list + i + ". "+ name + " - " + price2 +" "+ formatter.rub +".\n"; |
There was a problem hiding this comment.
⏫ Так как String является неизменяемым объектом, то при каждом сложении строк создаются новые объекты, что расходует память. Для таких случаев лучше использовать StringBuilder
|
|
||
| void ruble(double i){ | ||
| int i2 = (int)Math.floor(i); | ||
| switch(i2){ |
There was a problem hiding this comment.

Надо проверять последнюю или 2 последних цифры числа, в зависимости от ситуации, чтобы правильно определить склонение. Есть несколько случаев, которые нужно проверить, когда заканчивается на:
- 0
- 1
- 2-4
- 5-9
- и исключение, когда 2 цифры в конце надо проверять 11-14
| case 64: | ||
| case 74: | ||
| case 84: | ||
| case 94:{ |
There was a problem hiding this comment.
⏫ Среда разработки предложила немного укороченный вариант
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 ветки компактно, а в остальных случаях выводить "рублей".
No description provided.