2014-05-03 78 views
1

I've been working on this for a while如何通過10

乘以一個文本文件中每一個數字,但不管我嘗試修改只有第一線,而我想10 到multioly每個號碼例如:

1
2
3.3
4.5 . . .

應該是:

10
20
33
45

但是我得到的是:

10.0

只有

我已經把這個從計算器問題,並修改了它,但還是同樣的結果:

f = File.open("c:/Ruby/m.txt", "r+") 
f.each_line do |line| 
    f.write(line.to_f * 10) 
end 
f.close 

,如果我嘗試使用f.puts我會得到一個錯誤:看跌是一種私人方法?我如何將每個數字乘以10?

回答

2
lines = File.readlines("c:/Ruby/m.txt") 
new_lines = lines.map { |line| (line.to_f * 10).to_i } 

File.open("c:/Ruby/m.txt", "w") { |f| f.puts new_lines } 
+0

我希望你不介意,但爲什麼在這裏做圖工作,而不是選擇,根據這[博客](http://www.jacopretorius.net/2012/01/ruby-map-collect-and-select.html)它應該返回true,false .... – Mark

+1

@Mark閱讀[文檔](http://www.ruby-doc.org/core-2.1.1/Enumerable.html#method-i-map)['Enumerable#map'](http://www.ruby-doc.org /core-2.1.1/Enumerable.html#method-i-map) – bjhaid

+0

bjhaid,該示例沒有數字,但有多個小數位,但它不知道ñ如果這是一般情況。考慮修改你的答案,使3.45 => 34.5。 –

3

我想你會更好先讀文件,然後才寫它:

lines = File.readlines("c:/Ruby/m.txt").to_a 
f = File.open("c:/Ruby/m.txt", "w") 
lines.each do |line| 
    f.write((line.to_f * 10).to_i) 
end 
f.close