2017-01-14 4 views
1

У меня есть вопрос относительно циклов if else в Ruby. Вот кодRuby if else сравнение условий

print "Enter your age: " 
age = gets.chomp.to_i 

print "Enter your sex(M/m/F/f) : " 
sex = gets.upcase 

if (sex == "M" and age > 21) 
    puts "Hi dude. You may enter." 
elsif(sex == "F" and age > 18) 
    puts "Hi dudette. You may enter." 
elsif (sex == "M" and age < 21) 
    puts "Hi dude. You may not enter." 
elsif(sex == "F" and age < 18) 
    puts "Hi dudette. You may not enter." 
else 
    puts age 
    puts sex 
    puts "I do not recognize that sex. Enter only M, m, F, or f." 
end 

Когда я печатаю на входах, независимо от того, что я войти в него входит только в секцию петли еще. Я распечатал 2 возраста и пола для двойной проверки, и они соответствуют условиям, которые я перечислил. Так что проблема здесь с моими переменными или это мои, если еще условия?

+1

Комбинации '(М, 21) и' (F, 18) 'перейти к другому ветви слишком , Вы должны использовать '<=' or '> =' на одном из возрастных тестов для каждого пола. – axiac

+0

@axiac Yup, я понял это также. Благодаря! – Gabberz

ответ

1

Вы просто забыли добавить Chomp к сексуальной части

print "Enter your age: " 
age = gets.chomp.to_i 

print "Enter your sex(M/m/F/f) : " 
sex = gets.chomp.upcase 

if (sex == "M" and age > 21) 
    puts "Hi dude. You may enter." 
elsif(sex == "F" and age > 18) 
    puts "Hi dudette. You may enter." 
elsif (sex == "M" and age < 21) 
    puts "Hi dude. You may not enter." 
elsif(sex == "F" and age < 18) 
    puts "Hi dudette. You may not enter." 
else 
    puts age 
    puts sex 
    puts "I do not recognize that sex. Enter only M, m, F, or f." 
end 

Это работает

+2

О, спасибо! Но могу ли я спросить, правильно ли я понимаю? Потому что я пропустил на chomp, значит, я сравниваю случай с переменным сексом «M \ n» с «M»? – Gabberz

+0

есть, точно. Не забудьте отметить ответ как правильно :) –

+0

Хорошо, сделано. Еще раз спасибо! – Gabberz

Смежные вопросы