Ruby простые математические вычисления каждый раз выводят 0,0 - PullRequest
2 голосов
/ 03 августа 2020

Недавно я начал писать то же самое (калькулятор BMI) на многих языках. А я застрял в ruby. Все сделано, но простая математическая задача всегда возвращает 0.0. Я попытался исследовать проблему, но не смог найти ничего похожего в ruby.

Вот мой код:

print 'Weight: [lbs/kg] '
w = gets.to_f
print 'Height: [in/m] '
h = gets.to_f
    
print 'Choose your measurement system: [I/M] '
mSys = gets.to_s

if mSys == 'i' || mSys == 'I'
    bmi = 703 * (w / (h**2))         # Problem is here

elsif mSys == 'm' || mSys == 'M'
    bmi = w / ((h)**2)               # And here.
end

bmi = bmi.to_f
puts bmi

if bmi < 18.5
    puts 'Consider eating few burgers.'

elsif bmi > 18.5 && bmi < 25
    puts 'You have nothing to worry about.'

elsif bmi > 25
    puts 'Great Council of BMI says You are overwieght!'
end

1 Ответ

3 голосов
/ 03 августа 2020

BMI никогда не рассчитывается.

У вас нет пункта else в вашем расчете BMI. Если мы добавим один и исследуем mSys ...

if mSys == 'i' || mSys == 'I'
  bmi = 703 * (w / (h**2))
elsif mSys == 'm' || mSys == 'M'
  bmi = w / ((h)**2)
else
  p "#{mSys}"
end

, мы получим "i\n". Вам нужно удалить новую строку.

mSys = gets.chomp

Обратите внимание, что to_s не требуется, gets уже возвращает String.

1014
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...