【问题标题】:String can't be coerced into Fixnum Ruby字符串不能被强制转换为 Fixnum Ruby
【发布时间】:2016-09-26 22:20:51
【问题描述】:

我正在尝试学习 ruby​​,我的任务是创建一个简单的程序来获取用户输入,然后使用 elsif 语句给出可能的 3 个不同的答案。这是我的代码:

print "What is your birth year?"
year = gets.chomp
age = 2016 - year
 if age >= 40
     puts "You're old!"
 elsif age.between?(25, 39)
    puts "You aren't too old!"
 else
    puts "You're just a baby!"
end

但是,我不断收到“无法将字符串强制转换为 Fixnum”

我不记得在课程中做过类似我为“年龄”变量做的事情,所以我可能做错了,但我也无法在我的课程或网上找到答案。任何帮助将不胜感激!

【问题讨论】:

  • 您会发现,如果您保持代码正确缩进,它将使您的编码生活更轻松。任何体面的文本编辑器都会使这变得容易。在您的代码中,请注意您的 if age >= 40 与关联块的其余部分一起缩进,但结束 end 不是。在具有更复杂嵌套的代码中,或者具有会使调试更加困难的类或方法定义中。

标签: ruby


【解决方案1】:

请记住,gets 返回一个字符串值,而在 Ruby 中,字符串和数值是完全不同的东西。其他一些语言会在必要时强制它们,例如 PHP、Perl 或 JavaScript,但 Ruby 不会。

要完成这项工作:

year = gets.chomp.to_i

虽然从技术上讲,to_i 通常就足够了。

【讨论】:

  • 天哪。我现在不能感谢你。这让我发疯了!
  • 对于习惯了自动转换的人来说,这有点令人困惑。在 Ruby 领域 "5" == 5 返回 false0 在逻辑上也是正确的,所以要小心!
猜你喜欢
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多