1. ホーム
  2. ruby

[解決済み] Ruby で Fixnum から String への暗黙の変換ができない (TypeError)

2022-02-12 02:40:43

質問

クリス・パイン氏の著書「Learn to Program"」に掲載されている以下の質問に答えようとしています。

<ブロッククオート

うるう年。開始年と終了年を尋ねて、その間にすべてのうるう年を入れる(うるう年でもある場合はそれを含む)プログラムを書いてください。うるう年は4で割り切れる年です(1984年や2004年など)。しかし、100で割り切れる年は、400で割り切れる年(1600と2000のように、実際にはうるう年だった)でなければ、うるう年にはなりません(1800と1900のような年です)。なんということでしょう。

私のコードを実行すると、次のようなエラーが発生します。

leap_year.rb:12:in +': no implicit conversion of Fixnum into String (TypeError) from leap_year.rb:12:in '

以下は私のコードです。

#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

解決方法は?

を追加します。 .to_i をあなたの gets.chomp を呼び出します。 あなたはテキストに対して数学の演算をしようとしているのです。 コンソールから入力されたものは、たとえそれが数字に見えるテキストであっても、すべてテキストとして始まります。