首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby Modulo分区

Ruby Modulo分区
EN

Stack Overflow用户
提问于 2012-03-22 00:02:55
回答 3查看 16K关注 0票数 2

所以我写了一个用Ruby做模除的程序,使用了一个模块:

代码语言:javascript
复制
module Moddiv
    def Moddiv.testfor(op1, op2)
        return op1 % op2
    end
end

程序:

代码语言:javascript
复制
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作为输出!为什么会发生这种情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-22 00:16:51

这是因为firstnumsecondnum是字符串"70""6"。并且定义了String#% -它是格式化输出操作符。

由于"70"不是格式化字符串,因此它被视为文字;因此"70" % "6"根据模板"70" (即"70" )打印格式化的"6“。

你需要用firstnum = $_.to_i等来转换你的输入。

票数 10
EN

Stack Overflow用户

发布于 2012-03-22 00:17:13

Modulo似乎在字符串方面遇到了问题,例如,在irb中:

代码语言:javascript
复制
"70" % "6" => "70"

尝试执行您的return语句:

代码语言:javascript
复制
return op1.to_i % op2.to_i
票数 2
EN

Stack Overflow用户

发布于 2012-03-22 00:17:06

您获取的用户输入是字符串,而不是整数。

代码语言:javascript
复制
"70" % "6"
# => "70"

70 % 6
# => 4

在您的参数上使用.to_i,您就可以开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9808357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档