2016-03-24 5 views
0

Ich lerne Rubin und bin ein bisschen fest. Sie möchten, dass wir eine Variable als null setzen, wenn der Benutzer die Frage leer lässt. Andernfalls wandeln Sie ihre Antwort in eine Ganzzahl um. Ich habe das Folgende gefunden, aber wenn ich die Antwort leer lasse, druckt es 0. Kannst du mich in die richtige Richtung lenken?Wie setze ich eine Variable auf Null, wenn der Benutzer seine Antwort leer lässt?

puts "What's your favorite number?" 
number = gets.chomp 
if number == ' ' 
    number = nil 
else 
    number = number.to_i 
end 
p number 

Antwort

0

Sie testen nur, ob die eingegebene Nummer explizit ein einzelnes Leerzeichen ist. Wenn Sie auf "Leere" testen, möchten Sie wahrscheinlich die strip Eingabe, die Sie erhalten, und dann testen, ob es empty? ist.

z.

number = gets.strip 
if number.empty? 
    number = nil 
else 
    number = number.to_i 
end 

Du hast diese getaggt mit so gehe davon ich dir einen String erwägen leer zu sein, wenn blank? true zurück (dh der String leer ist oder besteht nur aus Leerzeichen. Wenn Sie Sie verwenden Schienen dann kann diese blank? Methode verwenden, um den Eingang zu testen:

number = gets 
if number.blank? 
    number = nil 
else 
    number = number.to_i 
end 
0

Sie haben einen zusätzlichen Raum bekommen - if number == ' ' - das if number == ''

Ein alternativer Weg if number.length == 0

0

Sie können wie dies tun

if number.empty? 
    number = nil 
else 
    number = number.to_I 
end 

oder zu sagen, wäre sein sollte in einer einzigen Zeile können Sie das tun

number = number.empty? ? nil : number.to_i 
Verwandte Themen