代码始终输出" not"

时间:2017-10-02 00:02:28

标签: ruby

以下代码始终输出" 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

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:3)

gets()方法返回String类型的对象。

当您在%()对象上调用String时,返回值是一个新的String对象(通常会更改文本。You can read more about string formatting here)。

由于String没有== 0个对象,因此if / else将始终采用相同的路径。

如果您想使用gets()的返回值(如数字),则需要先将其转换为一个。最简单的方法可能是在to_i()个对象上使用String方法,这会返回一个新的'整数&#39}。宾语。如果你正在做一些用户输入并不总是整数的事情(例如3.141.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转换为整数。