我的if语句有什么问题?

时间:2013-10-21 05:29:10

标签: ruby input io

在Ruby中工作,我正在尝试这样做,当我输入一行输入时,它会读取它并将它与一些if语句匹配。

input_stream = $stdin

input_stream.each_line do |line|  

  puts line

  if line == "a"
    puts "test 1"
  end
  if line == "b"
    puts "test 2"
  end
end

但是当我运行它并输入“a”或“b”时,这就是输出

a
a
b
b

它识别我输入了a和b,并将其打印回给我,但是if语句没有按预期运行。这有什么问题?

2 个答案:

答案 0 :(得分:3)

Ruby在使用each_line时维护换行符。最简单的解决方案是使用chomp删除它。

input_stream = $stdin

input_stream.each_line do |line|  
  line.chomp! # The new helpful line

  puts line

  if line == "a"
    puts "test 1"
  end
  if line == "b"
    puts "test 2"
  end
end

答案 1 :(得分:0)

因为如果你写这行,行末尾有\ n字符,它将起作用:

input_stream = $stdin

input_stream.each_line do |line|  

  puts line

  if line.chomp == "a"
    puts "test 1"
  end
  if line.chomp == "b"
    puts "test 2"
  end
end