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 № 1Sie 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.