我正在使用Ruby这样的输入:
lines = STDIN.readlines.map{|x| x.strip.to_i}.sort
这从命令提示符获取输入,但我想输入特定次数。假设我的测试用例数为3,如何在3行输入后停止测试?
答案 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