1

我的输入文件是:

1  
3  
5  
7  
9  

我希望我的输出文件是正方形,每行一个:

1  
9  
25  
49  
81  

但我得到:

19254981

即没有行空间

我的代码是:

a= File.open('inputs')
b= File.open('outputs', 'w')
a.each_line do |one_num|
  one_number = one_num.to_i
  square= one_number * one_number
  b << square
end
4

1 回答 1

2

使用puts而不是<<.

 b.puts square

旁注:您可以将整个事情作为一个长方法链来完成:

File.open('outputs','w').puts(File.open('inputs').readlines.map{ |l| n=l.to_i; n*n })

或者作为嵌套块更具可读性:

File.open('outputs','w') do |out|
  File.open('inputs') do |in|
    out.puts( in.readlines.map { |l| n=l.to_i; n*n } )
  end
end

尽管缺少显式close语句,但这两种解决方案都具有不留下任何悬空文件句柄的优点。

于 2012-05-05T01:38:06.713 回答