如何将两个零00作为整数打印?

我正在研究一些应用学院的练习题,我似乎无法打印两个00来进行时间转换。 这是我到目前为止所拥有的:

def time_conversion(minutes) hours = minutes/60 if minutes%60  10 minutes = minutes%60 elsif minutes%60 == 0 minutes = 00 end return "#{hours}:#{minutes}" end time_conversion(360) 

你可以使用sprintf

 sprintf("%02d:%02d", hours, minutes) 

或等效的String#%

 "%02d:%02d" % [hours, minutes] 

一个非常简单的代码重构可能是你的函数def中的一行 –

 return "#{m/60}:#{m%60 == 0 ? '00' : m%60}" 

从irb执行示例 –

 2.1.5 :077 > m=100 => 100 2.1.5 :078 > puts "#{m/60}:#{m%60 == 0 ? '00' : m%60}" 1:40 => nil 2.1.5 :079 > m=120 => 120 2.1.5 :080 > puts "#{m/60}:#{m%60 == 0 ? '00' : m%60}" 2:00 => nil 2.1.5 :081 > 

替换time_conversion最后一个语句, return "%02d:%02d" % [ hours, minutes ]

有关详细信息,请查看文档http://ruby-doc.org/core-2.1.5/String.html#method-i-25

Fixnum #divmod方法在这里很有用:

 def time_conversion(minutes) "%d hours: %02d minutes" % minutes.divmod(60) end time_conversion(360) #=> "6 hours: 00 minutes"