Rubyを学んでいます。そして、私は小さなプログラムを書きました。これまでに修正できない論理エラーに直面しています。これがコードです。
1: puts 'Please enter the starting Year'
2: startingYear = gets.chomp
3: puts 'Please enter the ending Year'
4: endingYear = gets.chomp
5: while(startingYear.to_i <= endingYear.to_i)
6: if(startingYear%4 == 0)
7: if((startingYear%400 == 0) or (startingYear%100 != 0))
8: puts startingYear
9: end
10: end
11: startingYear = startingYear.to_i + 1
12: end
このプログラムが行うことは次のとおりです。
これは、開始年と終了年を要求し、それらの間にすべてのうるう年を「配置」します (うるう年でもある場合は、それらも含めます)。うるう年は 4 で割り切れる年です (1984 年や 2004 年など)。ただし、100 で割り切れる年 (1800 や 1900 など) は、400 で割り切れない限り (実際にはうるう年だった 1600 や 2000 など)、うるう年ではありません。
Rubyデバッガーも使用しました。プログラムを実行すると、最初の繰り返しで行番号 6 が単純にスキップされます。その後、完全に正常に動作します。
例: 開始年に 1600 を入力し、終了年に 2000 を使用する場合。次に、出力は次から始まります。
1604年、1608年、1612年、. . . . . 1696年、1704年、1708年、. . . . . . 1992, 1996, 2000
論理的には 1600 も表示されるはずですが、プログラムは単純にそれをスキップします。私はそれが単なるヘアラインのようなエラーであることを知っています. しかし、私はそれを理解することができません。
PS 私は初心者なので、愚かな間違いは無視してください。ありがとう