Skip to content

Build version 1.0 - #1

Open
TurboSpiceMan wants to merge 5 commits into
mainfrom
dev
Open

TurboSpiceMan wants to merge 5 commits into
mainfrom
dev

Conversation

@TurboSpiceMan

Copy link
Copy Markdown
Owner

Build version 1.0

Comment thread src/main/java/Calculator.java Outdated
public double finalPrice = 0;

//Основная логика калькулятора
public void toCount(){

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⏫ Обычно функции стараются именовать как глаголы: посчитать (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");

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 устроен так, при каждой конкатенции происходит создание нового экземпляра String. Из-за этого, если мы будем несколько раз подряд производить такие манипуляции над строками, то можем столкнуться с не оптимальным обращением с ресурсами. Это исправить можно с помощью StringBuilder. Подробнее про его использование можно прочитать в этой статье от JavaRush

Comment thread src/main/java/Formatter.java Outdated
@@ -0,0 +1,11 @@
public class Formatter {
public String formatPrice(double price){
if (Math.floor(price) <=1 ){

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Данная проверка не покрывает все варианты склонения слова "рубль". Обрати внимание, что

  • значения от 11 до 19 пишутся с окончанием "рублей"
  • значения с единичным значением равным от 2 до 4 пишется с окончанием "рубля"
  • значения с единичным значением равным 1 пишется с окончанием "рубль"
  • остальные значения пишется с окончанием "рублей"

Comment thread src/main/java/Formatter.java Outdated
public class Formatter {
public String formatPrice(double price){
if (Math.floor(price) <=1 ){
if (Math.floor(price) % 10 == 1 && Math.floor(price) != 11){

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Обрати внимание, что нужно проверять не само значение на меньше 10 и больше 20, а его остаток от деления на 100. Сейчас твой алгоритм для числа 212 выведет 212 "рубля" (оканчивается на 2, но больше 20)

Comment thread src/main/java/Formatter.java Outdated
@@ -0,0 +1,15 @@
public class Formatter {
public String formatPrice(double price){
if (Math.floor(price) <= 1){

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

В данном случае мы проверяем просто само значение цены на <= 1. При этом если price будет равно 21, мы выведем "рублей". У тебя до этого была правильная проверка по первому условию:

Math.floor(price) % 10 == 1 && Math.floor(price) != 11

Но вместо проверки Math.floor(price) != 11 нужно было добавить проверку на остаток от деления на 100, т.е. Math.floor(price) % 100 != 11

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