sintax rails escape ruby fixnum

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?