1

我尝试在支持 Ruby 1.8.7 的在线 IDE 中运行此代码,但elsif无法识别该语句;例如,如果我输入“85”,它仍然会返回“Over-Weight”。

def prompt
 print ">> "
end

puts "Welcome to the Weight-Calc 3000! Enter your weight below!"

prompt; weight = gets.chomp()

if weight > "300" 
 puts "Over-weight"
elsif weight < "100"
 puts "Under-weight"
end

但是,当我运行以下命令时,它工作得很好:

def prompt
 print ">> "
end

puts "Welcome to the Weight-Calc 3000! Enter your weight below!"

prompt; weight = gets.chomp()

if weight > "300" 
 puts "Over-weight"
elsif weight > "100" && weight < "301"
 puts "You're good."
end

关于如何解决这个问题的任何想法?

4

2 回答 2

5

问题是您尝试比较从左到右评估的字符串,而不是数字。

将它们转换为整数(或浮点数),并进行比较。

weight = Integer(gets.chomp())

if weight > 300
 puts "Over-weight"
elsif weight < 100
 puts "Under-weight"
end
于 2012-09-06T18:18:20.887 回答
5

if weight > "300"

您正在比较两个字符串。

它应该是

if weight.to_i > 300
于 2012-09-06T18:18:40.803 回答