/ / Ich kann nicht herausfinden, warum ich die Fehlermeldung bekomme, dass "nil nicht in String umgewandelt werden kann" - Ruby

Ich kann nicht herausfinden, warum ich Fehler bekomme "kann Nil nicht in String umwandeln" - Ruby

puts "Please enter your age "
age=gets.chomp
age=age.to_i

if  age >=18
division="in the adult "

elsif age >=12
division="in the junior "

elsif age >=5
division="in the novice "

else
puts "We are sorry, but you are ineligible to play in the league at this time."

end
puts "Congratulations! You are "+division+"league."

sleep 5

Der Fehler, den ich bekomme, ist dies:

We are sorry, but you are ineligible to play in the league at this time.
:18:in `+": can"t convert nil into String (TypeError)
:18:in `<main>"

Antworten:

1 für die Antwort № 1

Sie erhalten diese Nachricht, weil division ist null. Falls keine Ihrer Bedingungen erfüllt ist, wird die Meldung "Es tut uns leid" angezeigt, aber dem wird kein Wert zugewiesen division Variable.

Sie können es loswerden, indem Sie:

puts "Congratulations! You are "+division+"league." unless division.nil?

1 für die Antwort № 2

Das liegt daran, dass Sie nicht initialisieren division, und es ist also auf Null gesetzt. Division wie folgt:

division = "in no"

Tun Sie das entweder in else oder vor dem ersten if.


0 für die Antwort № 3

Nur um zu zeigen, wie Ihr Code Ruby-ähnlicher sein kann

print "Please enter your age: "
age = gets.chomp.to_i

division = case
when age >= 18
"adult"

when age >= 12
"junior"

when age >=5
"novice"

else
nil

end

if division
puts "Congratulations! You are in the #{ division } league."
else
puts "We are sorry, but you are ineligible to play in the league at this time."
end

Ich bin sicher, es könnte enger werden, aber so würde ich es machen. Auch, weil der Code prüft, ob division gesetzt ist, wird der Fehler, den Sie sehen, nicht zurückgegeben.