如何在Ruby中使用特定数量的输入行?

时间:2009-05-28 17:46:46

标签: ruby

我正在使用Ruby这样的输入:

lines = STDIN.readlines.map{|x| x.strip.to_i}.sort

这从命令提示符获取输入,但我想输入特定次数。假设我的测试用例数为3,如何在3行输入后停止测试?

4 个答案:

答案 0 :(得分:6)

lines = []
3.times do
  lines << STDIN.readline.strip.to_i
end
lines.sort

编辑:

如果您说它希望它接受任意数量的输入,您有几个选项:最简单的方法是首先输入您有多少行输入,如下所示: / p>

num_lines = STDIN.readline.strip.to_i
lines = []
num_lines.times do
  lines << STDIN.readline.strip.to_i
end
lines.sort

或者,如果您不知道要预期多少行,您必须有一些方法来表示数据已完成。例如,如果您想要一个空行表示数据的结尾:

lines = []
STDIN.each_line do |line|
  line.strip!
  break if line == ''
  lines << line.to_i
end
lines.sort

顺便说一下,当程序在等待输入时暂停时,这不称为“无限循环”。它是“阻止”或只是“等待输入”。

答案 1 :(得分:2)

一行代码......

这只需要你想要使用的行数 - 所需的数量是变量@requested_count:

lines = STDIN.readlines.values_at(0..@requested_count - 1).map{|x| x.strip.to_i}.sort

答案 2 :(得分:1)

为什么不使用gets

lines = []
1.upto(3) do
  lines << gets.to_i
end

puts lines.sort

答案 3 :(得分:0)

以前答案的变体:

lines = []
1.upto(3) do
  lines << STDIN.readline.strip.to_i
end
puts lines.sort