如果语句不能在Ruby中使用gets()

时间:2016-01-20 04:35:28

标签: ruby

当我要求用户输入这样的内容时:

puts "Enter num: "
num = gets()
if num == 44
  puts "Yeah" 
end
unless num == 44
  puts "No"
end

当我在提示时输入"No"时,输出为44。我无法弄清楚发生了什么,所以请帮忙。

3 个答案:

答案 0 :(得分:2)

您可以这样做:

gets.to_i

基本上chomp换行符并转换为整数。

示例:

2.1.2-perf :020 > num = gets.to_i
44
 => 44
2.1.2-perf :021 > if num == 44
2.1.2-perf :022?>       puts "Yeah"
2.1.2-perf :023?>   end
Yeah

答案 1 :(得分:2)

输出是"否"因为当你使用gets实际上输入被视为字符串,所以发生不匹配。因此,为了使您的逻辑工作,您应该将其转换为整数

所以这是解决方案

puts "Enter num: "
num = gets().to_i
if num == 44
    puts "Yeah" 
end
unless num == 44
    puts "No"
end

答案 2 :(得分:1)

gets()本身包含newline字符。使用gets.chomp删除该额外字符。然后,调用.to_i转换为整数。所以:gets.chomp.to_i