rails - Ruby ninguna conversión implícita de Fixnum en String(TypeError)
haml to html (2)
Agrega un .to_i
a tus llamadas gets.chomp
. Estás tratando de hacer operaciones matemáticas en el texto. Cuando se ingresa desde la consola, todo comienza como texto, incluso si se trata de texto de aspecto numérico.
Estoy tratando de responder la siguiente pregunta del libro "Aprende a programar" de Chris Pine:
Años bisiestos. Escriba un programa que solicite un año de inicio y un año de finalización y luego ponga todos los años bisiestos entre ellos (y si los incluye, si son también años bisiestos). Los años bisiestos son años divisibles por 4 (como 1984 y 2004). Sin embargo, los años divisibles por 100 no son años bisiestos (como 1800 y 1900) a menos que también sean divisibles por 400 (como 1600 y 2000, que en realidad fueron años bisiestos). ¡Que desastre!
Recibo el siguiente error cuando ejecuto mi código:
leap_year.rb: 12: in +'': no implicit conversion of Fixnum into String (TypeError) from leap_year.rb:12:in
''
Aquí está mi código:
#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
Esto se debe a que la entrada de gets.chomp
es una String
. No puede ejecutar el módulo ( %
) en una String
. Necesitas convertirlo a un entero primero.
Prueba esto...
puts ''What is the starting year?''
starting_year = gets.chomp.to_i
puts ''What is the ending year?''
ending_year = gets.chomp.to_i
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
¿Eso funciona ahora?