Ruby哨兵循环无法正常工作(七周七种语言)

时间:2012-03-30 01:57:09

标签: ruby loops sentinel

刚刚开始研究泰特先生“七周七语”中的Ruby章节。

对于第1天的奖励问题,我要生成一个“随机”数字,从输入中读取用户的猜测,并将猜测与我的“随机”数字进行比较,然后提示用户继续使用{ {1}}循环。但是,无论用户输入的字符串值是什么,循环似乎都会终止。

begin

输出:

# file : day1_bonus.rb
# Seven Languages In Seven Weeks
#
# Guess a random number!

again = "y"

begin
  print "Enter a number between 0 and 9: "
  number = gets.to_i
  randNum = rand(10)

  if number == randNum
    puts 'You guessed correctly!'
  else
    puts 'You guessed incorrectly.'
  end

  print "Play again? (y/n): "
  again = gets
  again.chomp   # remove carriage return
end while again == "y"

1 个答案:

答案 0 :(得分:4)

chomp有两个版本。常规chomp和爆炸chomp!。不同之处在于:常规返回修改后的字符串(并单独留下源代码),而bang版本就地修改原始字符串。

所以,在你的代码中,你会选择回车并扔掉这项工作。要么这样做

again = again.chomp

或者

again.chomp!