【问题标题】:trying to use each method to find divisible numbers and print them尝试使用每种方法找到可整除的数字并打印它们
【发布时间】:2015-02-13 11:40:27
【问题描述】:

我是 ruby​​ 新手,也是 stack 新手。我正在尝试对数字数组使用 .each 方法来查看哪些数字可以被 4 和 400 整除。它基于 Chris Pine 的“学习编程”Ruby 教程中的练习。您应该在其中找到闰年,然后从用户输入的一系列年份中打印它们。我使用 if/else 语句完成了此操作……但在我看来,这应该可以使用 each 方法或 map 方法来完成?更少的代码。

例如:

puts "Enter two years (to - from) to find out which years are leap years!" 

puts "Enter the first year.."

year1 = gets.chomp.to_i

puts "Now enter the second year"

year2 = gets.chomp.to_i

range = (year1..year2).to_a

puts "These are the leap years between those years:"

range.each do |year|

leaps = (year % 4 == 0 || year % 400 == 0)

end

puts leaps

此代码可能不正确,但我尝试了不同的方法(放入 .each,在外部定义变量等),但似乎没有任何效果。就像我说的,我用 if/else 完成了它……我只是觉得可能有更好的方法,这让我发疯了。我不正确理解 .each 吗?我使用了错误的方法吗?可以使用每个/地图/或收集来完成吗????提前致谢!

【问题讨论】:

  • 详细信息:gets.chomp.to_i 返回与 gets.to_i 相同的值。

标签: ruby each


【解决方案1】:

您还需要在 each 块内添加 puts。此外,您可以只除以4 并检查余数是否为0。不需要400

range.each do |year|
   puts year if year % 4 == 0;
end

puts year 只有在满足 if 条件时才会执行。

【讨论】:

  • 找到能被四整除的闰年是不够的。检查:github.com/JikkuJose/exercism/tree/master/ruby/leap
  • Amit.... 说明指出闰年可以被 4 整除,而能被 100 整除的年份不是闰年,除非它们能被 400 整除......所以我想我会需要if语句吗?那是我遇到问题的地方吗?你不能在 .each 块中加入 if 语句吗?
  • 感谢 Jikku 的链接!!!我熟悉 javascript 中的 switch 语句,但没有在 ruby​​ 中尝试过它们。还没有那么远。我喜欢它可以通过开关来完成,但我感觉/想知道一旦范围在数组中是否可以使用迭代器来完成 - 代码更少:)
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多