2017-01-14 178 views
1

我有一個關於Ruby中的if else循環的問題。下面是代碼Ruby如果其他條件比較

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)'和'(女,18)'去else分支太。你應該在每個性別的年齡測試中使用'<=' or '> ='。 – axiac

+0

@axiac是的,我也意識到這一點。謝謝! – Gabberz

回答

1

你剛纔忘了格格添加到性別部分

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