If/Else in Ruby

Asked

Viewed 680 times

2

I am very beginner in Ruby and while practicing doing some exercises here I came across a mistake that I do not understand yet how it occurs.

Well, the error is the following: There is a comparison of a number typed by the user, that if this number is greater than or equal to 65, returns a message 'x', but when I type a number much lower, it instead of showing me the message y, it returns me 'x' the same way.

Follow the code:

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
  • I updated the response with more details about string comparisons

1 answer

3

See the difference between using 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 it only, it would have to be 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 problem if put exactly 17, so I arranged the first elsif.

I also added this line to make sure you are using integers:

idade = idade.to_i

And as you yourself have noticed, the quotation marks are no longer necessary. The string problem, for example, is that '9' is greater than '18', because with strings it is alphabetical and not numerical, disturbing the results. Similarly, '7' is greater than '65' in this context.

  • 1

    @Victorstafusa I had answered the comment, and supplemented the question in this sense: "And as you yourself noticed, the quotation marks"... However, thanks for the warning, I might not have seen it ;) (I will delete this comment later)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.