所以我创建了一个程序,在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 :(得分:10)
这是因为firstnum
和secondnum
是字符串 "70"
和"6"
。 String#%
已定义 - 它是格式化输出运算符。
由于"70"
不是格式字符串,因此将其视为文字;因此"70" % "6"
根据模板"70"
打印“6”格式,只有"70"
。
您需要使用firstnum = $_.to_i
等转换输入
答案 1 :(得分:2)
Modulo似乎在使用字符串时遇到问题,例如,在irb:
中"70" % "6" => "70"
尝试制作你的退货声明:
return op1.to_i % op2.to_i
答案 2 :(得分:0)
您将用户输入作为字符串而不是整数来抓取。
"70" % "6"
# => "70"
70 % 6
# => 4
对你的参数使用.to_i
,你应该好好去。