If / else in Ruby

1

I'm a beginner in Ruby and while doing some exercises here, I came across an error that I did not understand as yet.

Well, the error is as follows: It has a comparison of a number entered by the user, that if this number is greater than or equal to 65, return an 'x' message, but when I type a number much lower, it of showing me the message y, it returns me 'x' in the same way.

Follow the code below:

puts'Por favor, digite sua idade: '
idade = gets.chomp

if idade >= '18' and idade < '65'
    print'Legal, você é maior de idade, ja pode ser preso.'
elsif idade < '17'
    print'Que pena, você ainda é menor de idade.'
else idade >= '65'
    print'Você ja é um idoso.'
end
    
asked by anonymous 15.03.2015 / 01:25

1 answer

2

See the difference between the use of else and elsif in both versions:

puts'Por favor, digite sua idade: '
idade = gets.chomp
idade = idade.to_i

if idade >= 18 and idade < 65
    print'Legal, você é maior de idade, ja pode ser preso.'
elsif idade < 18
    print'Que pena, você ainda é menor de idade.'
elsif idade >= 65
    print'Você ja é um idoso.'
end

To use else only, it would have to look something like this:

puts'Por favor, digite sua idade: '
idade = gets.chomp
idade = idade.to_i

if idade >= 18 and idade < 65
    print'Legal, você é maior de idade, ja pode ser preso.'
elsif idade < 18
    print'Que pena, você ainda é menor de idade.'
else 
    print'Você ja é um idoso.'
end

Note that your original code will give you trouble if you put exactly 17, so I got the first elsif.

I've also added this line to make sure you're using integers:

idade = idade.to_i

And as you yourself have noted, the quotes are no longer necessary. The problem of strings is that for example, the '9' is greater than '18', because strings are alphabetical and non-numeric, hindering the results. Likewise, '7' is greater than '65' in this context.

    
15.03.2015 / 01:32