gpt4 book ai didi

ruby - 在 Ruby 中使用模数 % 运算符时出现逻辑错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:57 25 4
gpt4 key购买 nike

我一直在学习 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

这是这个程序的作用。
它要求开始年份和结束年份,然后将所有闰年“放入”它们之间(如果它们也是闰年,则包括它们)。闰年是可以被四整除的年份(例如 1984 和 2004)。但是,能被 100 整除的年份(例如 1800 和 1900)不是闰年,除非它们能被 400 整除(例如 1600 和 2000,它们实际上是闰年)。

我也用过 Ruby 调试器。当我执行程序时,它只是在第一次迭代时跳过第 6 行。之后它就完全正常了。
例如:当我使用输入 1600 作为起始年份和 2000 作为结束年份时。然后输出开始于:

1604,1608,1612,.....1696,1704,1708,......1992年,1996年,2000
我的意思是从逻辑上讲它也应该显示 1600 但程序只是跳过它。我知道这只是一个像错误一样的细线。但我就是想不通。

附言我是新手所以请忽略任何愚蠢的错误。谢谢

最佳答案

在开始时将您的字符串转换为整数:

startingYear = gets.chomp.to_i 
endingYear = gets.chomp.to_i

那么您就不必在代码中的其他任何地方使用to_i

您的程序在第一次迭代时跳过第 6 行,因为您的 startingYear 是第一次通过循环的字符串。

关于ruby - 在 Ruby 中使用模数 % 运算符时出现逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com