Ruby keine implizite Konvertierung von Fixnum in String (TypeError)
Ich versuche eine Antwort auf die folgende Frage von Chris Pine ist "Programmieren Lernen" - Buch:
Schaltjahre. Schreiben Sie ein Programm, das fragt, für ein Startjahr und Endjahr und setzt dann alle Schaltjahre zwischen (und inklusive Ihnen, wenn Sie auch in Schaltjahren). Schaltjahre sind die Jahre, teilbar durch 4 (wie 1984 und 2004). Jedoch, Jahre, teilbar durch 100 sind keine Schaltjahre (z.B. 1800-und 1900 -), es sei denn, Sie sind auch teilbar durch 400 (wie 1600 und 2000, die in der Tat waren Schaltjahre). Was für ein Durcheinander!
Bekomme ich die folgende Fehlermeldung, wenn ich mein code:
leap_year.rb:12:in +': no implicit conversion of Fixnum into String (TypeError)
'
from leap_year.rb:12:in
Hier ist mein code:
#leap years
puts 'What is the starting year?'
starting_year = gets.chomp
puts 'What is the ending year?'
ending_year = gets.chomp
while starting_year <= ending_year
if starting_year%4 == 0 && (starting_year%100 != 0 && starting_year%400 == 0)
puts starting_year
end
starting_year+=1
end
InformationsquelleAutor der Frage stecd | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
.to_i
zu Ihremgets.chomp
Anrufe. Sie zu tun versuchen, mathematische Operationen auf text. Wenn eingegeben, von der Konsole aus, alles beginnt als text, sogar wenn es die numerische Suche text.InformationsquelleAutor der Antwort Nick Veys
Dies ist, weil der input von
gets.chomp
ist einString
. Sie können modulo (%
) auf eineString
. Sie brauchen, um zu konvertieren in eine Ganzzahl ersten.Versuchen, diese...
Funktioniert das jetzt?
InformationsquelleAutor der Antwort Max Woolf