【问题标题】:Ruby Program time conversionRuby程序时间转换
【发布时间】:2016-03-30 12:25:37
【问题描述】:

任务是编写一个需要几分钟的方法,并返回一个将数字格式化为hours:minutes的字符串。

这是我目前所拥有的:

def time_conversion(minutes)
minutes = (minutes / 60) % 60
hours = minutes / (60 * 60)
format(" %02d:%02d ", hours, minutes)
return format
end

不适合我

【问题讨论】:

  • @takendarkk 看到他的解决方案不起作用意味着没有得到预期的结果
  • @SocoM 当然。但它是不正确的输出吗?一个错误?还有什么?正如你所说,有很多方法可以“没有得到预期的结果”。
  • 请阅读“minimal reproducible example”和“How to Ask”。 “不适合我”是什么意思?您的输入数据和预期输出在哪里?我强烈建议养成正确缩进代码的习惯;在调试和向他人展示您的代码时,尤其是在您开始编写更复杂的代码时,它非常有帮助。
  • minutes / (60 * 60) 真的是计算这么多分钟中有多少小时的方法吗?一小时有多少分钟?

标签: ruby-on-rails ruby


【解决方案1】:

试试看

h = minutes/60
M = minutes%60 

【讨论】:

  • 为什么?解释。不要扔掉代码,而是展示它为什么有用。
  • 不知道我能在这里提供什么帮助,但他正在寻找的是一个简单的数学问题的解决方案,而不是编程问题!
  • 您能否解释一下以下内容,它是如何工作的......我是编码新手,还没有明白问号在这里的作用......非常感谢几分钟=(分钟
  • 这是@Richard 的答案,基本上是如果你有更少的 10 分钟添加/追加 0 所以 66 的例子变成了 1:06 而不是 1:6
  • @SocoM “他正在寻找一个简单数学问题的解决方案,而不是编程问题!”然后,这将使它成为 Stack Overflow 的话题,而成为众多数学相关网站之一的话题。但是,由于这个问题是用代码来表达的,所以它是一个代码编程问题。存在数学错误并不会改变这一点。
【解决方案2】:

试试这个

def time_conversion(time)
    minutes = time % 60
    hours = time / 60
    minutes = (minutes < 10)? "0" + minutes.to_s : minutes.to_s
    return hours.to_s + ":" + minutes
end

在 Ruby 中使用除法返回一个整数,降低到前一个数字。使用模数返回除法后的余数。

【讨论】:

    【解决方案3】:

    Ruby 的Numeric#divmod 正是您想要的。它返回除法运算的商和余数,例如66.divmod(60) 返回[ 1, 6 ]。结合sprintf(或String#%,这是一个极其简单的解决方案:

    def time_conversion(minutes)
      "%02d:%02d" % minutes.divmod(60)
    end
    
    puts time_conversion(192)
    # => 03:12
    

    【讨论】:

      猜你喜欢
      • 2021-09-05
      • 2011-04-18
      • 2011-05-19
      • 2015-10-11
      • 1970-01-01
      • 2010-09-21
      • 2019-02-25
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多