[英]How can I take a specific number of lines of input in Ruby?
我正在像這樣在Ruby中進行輸入:
lines = STDIN.readlines.map{|x| x.strip.to_i}.sort
這需要從命令提示符輸入,但是我想輸入特定的次數。 假設我的測試用例數是3,那么在輸入3行之后如何停止它?
lines = []
3.times do
lines << STDIN.readline.strip.to_i
end
lines.sort
如果要說要它接受任意數量的輸入,則有兩種選擇:最簡單的方法是首先輸入您擁有多少行輸入,如下所示:
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
順便說一句,當程序在等待輸入時暫停時,這不稱為“無限循環”。 它是“阻止”或只是“等待輸入”。
一行代碼...
這只會占用您要使用的行數-所需的計數在變量@requested_count中:
lines = STDIN.readlines.values_at(0..@requested_count - 1).map{|x| x.strip.to_i}.sort
為什么不使用gets
?
lines = []
1.upto(3) do
lines << gets.to_i
end
puts lines.sort
先前答案的變體:
lines = []
1.upto(3) do
lines << STDIN.readline.strip.to_i
end
puts lines.sort
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.