以下代码始终输出" not":
print "input a number please. "
TestNumber = gets
if TestNumber % 2 == 0
print "The number is even"
else
print "The number is not even"
end
我的代码出了什么问题?
答案 0 :(得分:3)
gets()
方法返回String
类型的对象。
当您在%()
对象上调用String
时,返回值是一个新的String
对象(通常会更改文本。You can read more about string formatting here)。
由于String
没有== 0
个对象,因此if / else将始终采用相同的路径。
如果您想使用gets()
的返回值(如数字),则需要先将其转换为一个。最简单的方法可能是在to_i()
个对象上使用String
方法,这会返回一个新的'整数&#39}。宾语。如果你正在做一些用户输入并不总是整数的事情(例如3.14
或1.5
),你可能需要使用不同的方法。
最后一件事:在您的示例中,gets()
的结果会保存到名为constant
的{{1}}中。常量与常规变量不同,如果您没有故意使用它们,它们可能会导致问题。正常变量不以大写字母开头。 (You can read more about ruby variables here)。在ruby中,你需要写出这样的变量名:TestNumber
。
答案 1 :(得分:0)
我怀疑您的Testnumber变量可能在操作期间被解释为字符串。确保testnum首先转换为整数,即使你输入说100它可能被解释为搅拌“100”而不是整数100。
可以在此处找到类似的问题:Ruby Modulo Division
答案 2 :(得分:0)
您必须将TestNumber从字符串转换为整数,因为您的输入包含换行符和/或与整数不匹配的其他不需要的字符。
在测试前使用TestNumber = gets.to_i
转换为整数。