Repository navigation
Build version 1.0 - #1
TurboSpiceMan wants to merge 5 commits into
Conversation
| public double finalPrice = 0; | ||
|
|
||
| //Основная логика калькулятора | ||
| public void toCount(){ |
There was a problem hiding this comment.
⏫ Обычно функции стараются именовать как глаголы: посчитать (count), добавить (add), получить (get). Функции, начинающиеся с to обычно подразумевают конвертацию моделей. Например конвертацию значения Int в строковое представление мы бы могли назвать toString (в дальнейшем мы увидим, что в Kotlin эти функции именно так и именуются)
| //Список всех товаров | ||
| public void toList(String name, double price){ | ||
| Formatter formatter = new Formatter(); | ||
| productNameAndPrice = productNameAndPrice.concat(name.trim()).concat(" - " + price + formatter.formatPrice(price) + "\n"); |
There was a problem hiding this comment.
⏫ String устроен так, при каждой конкатенции происходит создание нового экземпляра String. Из-за этого, если мы будем несколько раз подряд производить такие манипуляции над строками, то можем столкнуться с не оптимальным обращением с ресурсами. Это исправить можно с помощью StringBuilder. Подробнее про его использование можно прочитать в этой статье от JavaRush
| @@ -0,0 +1,11 @@ | |||
| public class Formatter { | |||
| public String formatPrice(double price){ | |||
| if (Math.floor(price) <=1 ){ | |||
There was a problem hiding this comment.
- значения от 11 до 19 пишутся с окончанием "рублей"
- значения с единичным значением равным от 2 до 4 пишется с окончанием "рубля"
- значения с единичным значением равным 1 пишется с окончанием "рубль"
- остальные значения пишется с окончанием "рублей"
| public class Formatter { | ||
| public String formatPrice(double price){ | ||
| if (Math.floor(price) <=1 ){ | ||
| if (Math.floor(price) % 10 == 1 && Math.floor(price) != 11){ |
There was a problem hiding this comment.
| @@ -0,0 +1,15 @@ | |||
| public class Formatter { | |||
| public String formatPrice(double price){ | |||
| if (Math.floor(price) <= 1){ | |||
There was a problem hiding this comment.
В данном случае мы проверяем просто само значение цены на <= 1. При этом если price будет равно 21, мы выведем "рублей". У тебя до этого была правильная проверка по первому условию:
Math.floor(price) % 10 == 1 && Math.floor(price) != 11
Но вместо проверки Math.floor(price) != 11 нужно было добавить проверку на остаток от деления на 100, т.е. Math.floor(price) % 100 != 11
Build version 1.0