2017-01-14 5 views
1

Ich habe eine Frage zu den if else Schleifen in Ruby. Hier ist der CodeRuby wenn sonst Bedingung Vergleich

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 

Wenn ich in den Eingängen geben, und zwar unabhängig von dem, was ich gebe es nur in den anderen Schleifenabschnitt eintritt. Ich habe die 2 Variablen Alter und Geschlecht zur Überprüfung ausgedruckt und sie passen zu den Bedingungen, die ich aufgelistet habe. So ist das Problem hier mit meinen Variablen oder ist es mein wenn sonst Bedingungen?

+1

Die Kombinationen '(M, 21)' und '(F, 18)' gehen auch an den anderen Zweig . Sie sollten '<=' or '> =' bei einem der Altertests für jedes Geschlecht verwenden. – axiac

+0

@axiac Yup, das habe ich auch gemerkt. Vielen Dank! – Gabberz

Antwort

1

Sie haben vergessen, nur die chomp zum Teil Sex hinzufügen

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 

Das funktioniert

+2

Oh, danke! Aber kann ich fragen, ob mein Verständnis stimmt? Weil ich Chomp verpasst habe, bedeutet es, dass ich für den Fall des variablen Sex "M \ n" mit "M" vergleiche? – Gabberz

+0

ja genau. Vergessen Sie nicht, die Antwort als richtig zu markieren :) –

+0

Okay, fertig. Danke noch einmal! – Gabberz

Verwandte Themen