为什么这个ruby代码不起作用

时间:2016-04-19 02:13:39

标签: ruby

这是一个练习题 - 写一个需要几分钟的方法,然后返回一个将数字格式化为hours:minutes的字符串。

def time_conversion(minutes)
    hours = minutes / 60
    mins = minutes % 60
    time = hours + ":" + mins
    return time
end

以下是测试是否有效。如果它们返回true则表示我的代码正常工作。

puts('time_conversion(15) == "0:15": ' + (time_conversion(15) == '0:15').to_s)
puts('time_conversion(150) == "2:30": ' + (time_conversion(150) == '2:30').to_s)
puts('time_conversion(360) == "6:00": ' + (time_conversion(360) == '6:00').to_s)

有时我会在前两个测试中得到真实但第三个测试行显示为false,即使代码将打印出完全符合要求的内容。

其他时候我收到以下错误:

字符串不能被强制转换为Fixnum(repl):4:+' (repl):4:in time_conversion' (repl):1:在`initialize'

请协助。

2 个答案:

答案 0 :(得分:1)

错误主要是指这一行 time = hours + ":" + mins

hours& minsFixnum,而“:”为String 正如错误消息所示,“字符串无法强制进入Fixnum”。

您可以time = hours.to_s + ":" + minutes.to_stime = "#{hours}:#{minutes}"

答案 1 :(得分:0)

因为Fixnum#+采用Numeral参数,而不是String