簡體   English   中英

如何在Ruby中使用特定數量的輸入行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM