2012-03-21 121 views
1

所以我做了一個程序做在Ruby中模師,使用一個模塊:紅寶石模除

module Moddiv 
    def Moddiv.testfor(op1, op2) 
     return op1 % op2 
    end 
end 

計劃:

require 'mdivmod' 
print("Enter the first number: ") 
gets 
chomp 
firstnum = $_ 
print("Enter the second number: ") 
gets 
chomp 
puts 
secondnum = $_ 
puts "The remainder of 70/6 is " + Moddiv.testfor(firstnum,secondnum).to_s 

當我用兩個數字運行它,說70和6 ,我得到70作爲輸出!這是爲什麼發生?

+0

sscce.org。另外,你確定這是一個關於Rails的問題嗎?對我來說就像Ruby。 – 2012-03-21 16:07:28

+0

是的,它只是紅寶石,我分心,鍵入導軌,而不是,編輯 – Billjk 2012-03-21 16:08:34

+1

嘗試簡化您的代碼,並在這裏發佈整個事情。你可以將它簡化爲1行。 – 2012-03-21 16:10:24

回答

10

這是因爲firstnumsecondnum"70""6"。並定義了String#% - 它是格式化輸出運算符。

由於"70"不是格式字符串,所以它被視爲文字;所以"70" % "6"打印「6」,根據模板"70"格式化,這只是"70"

您需要將輸入轉化與firstnum = $_.to_i

0

你抓住用戶輸入字符串,而不是整數。

"70" % "6" 
# => "70" 

70 % 6 
# => 4 

對你的參數使用.to_i,你應該很好去。

2

模似乎與字符串的麻煩,例如,在內部評級法:

"70" % "6" => "70" 

請嘗試將return語句:

return op1.to_i % op2.to_i 
+0

@Chowlett有一個更好的解釋(並打敗我21秒!) – 2012-03-21 16:19:13