2

刚开始阅读 Tate 先生的“七周之七语言”中的 Ruby 章节。

对于第 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"

输出:

Enter a number between 0 and 9: 3
You guessed incorrectly.
Play again? (y/n): y
nil
4

1 回答 1

4

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

因此,在您的代码中,您会选择回车并丢弃这项工作。要么这样做

again = again.chomp

或这个

again.chomp!
于 2012-03-30T02:04:34.430 回答