如何在循环的每次迭代中按数字读取?动态工作很重要(不要一次读取整行并转换为数组),在每次迭代中,从文件字符串中取一个数字并对其进行处理。怎么做对呢?
input.txt:
5
1 7 5 2 3
使用文件的第二行。
fin = File.open("input.txt", "r")
fout = File.open("output.txt", "w")
n = fin.readline.to_i
heap_min = Heap.new(:min)
heap_max = Heap.new(:max)
for i in 1..n
a = fin.read.to_i #code here <--
heap_max.push(a)
if heap_max.size > heap_min.size
tmp = heap_max.top
heap_max.pop
heap_min.push(tmp)
end
if heap_min.size > heap_max.size
tmp = heap_min.top
heap_min.pop
heap_max.push(tmp)
end
if heap_max.size == heap_min.size
heap_max.top > heap_min.top ? median = heap_min.top : median = heap_max.top
else
median = heap_max.top
end
fout.print(median, " ")
end
答案 0 :(得分:0)
读取文件的第二行:
line2 = File.readlines('input.txt')[1]
将其转换为整数数组:
array = line2.split(' ').map(&:to_i).compact
答案 1 :(得分:0)
如果您100%确定文件中的数字按空格分开,则可以尝试以下操作:
a = fin.gets(' ', -1).to_i