0

我正在编写一个应该从 STDIN 读取 n 次的代码。所以可以说 3 次。最好的方法是什么?

我试过这个

counter = 0
while sentence = gets.chomp && counter < 3 do
 ...
 counter += 1
end

但出于某种奇怪的原因,循环内的句子变量是布尔值?

4

2 回答 2

2

您可以执行以下操作:

n.times { sentence = gets.chomp }

或者

n.times do 
  sentence = gets.chomp
  # your code here
end
于 2013-08-11T15:53:27.640 回答
1

运算符优先级。该行:

while sentence = gets.chomp && counter < 3 do

被解释为

while sentence = ( gets.chomp && counter < 3 ) do

所以,你可以这样做:

while ( sentence = gets.chomp ) && counter < 3 do

这就解释了为什么你得到了truefalse值 into sentence,第三个选项应该解决这个问题,所以你的代码非常接近工作。但是,在 Ruby 中可能更常见的是看到像 Babai 的解决方案

于 2013-08-11T15:54:19.033 回答