如何在Ruby中循环的每次迭代中按数字读取?

时间:2019-06-17 13:35:14

标签: ruby file

如何在循环的每次迭代中按数字读取?动态工作很重要(不要一次读取整行并转换为数组),在每次迭代中,从文件字符串中取一个数字并对其进行处理。怎么做对呢?

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

2 个答案:

答案 0 :(得分:0)

读取文件的第二行:

line2 =  File.readlines('input.txt')[1]

将其转换为整数数组:

array = line2.split(' ').map(&:to_i).compact

答案 1 :(得分:0)

如果您100%确定文件中的数字按空格分开,则可以尝试以下操作:

a = fin.gets(' ', -1).to_i