2011-05-10 45 views
0
puts "Hello! Reading temperature value from data file..." 
num = File.read("temp.dat") 
puts "The number is #{num}..." 
celsius = num.to_i 
fahrenheit = (celsius.to_i * 9/5) + 32 
puts "The Fahrenheit value is: #{ fahrenheit }." 

在第三行中,在#{num}塊之後的...被打印在新行中。我的印象是,使用該塊將參數傳遞給顯示屏可以更輕鬆地進行格式化。爲什麼三個點寫入新行?

爲什麼這些點會變成一個新的線?

+5

因爲'temp.dat'文件最後包含NewLine字符? – manji 2011-05-10 15:41:14

+0

如果您不熟悉調試Ruby,那麼您可能需要查看http://stackoverflow.com/questions/3955688/how-do-i-debug-ruby-scripts – 2011-05-10 23:19:39

回答

5

當你閱讀一個文件時,你也會得到換行符。也許你正在尋找的是這樣的:

celsius = File.readlines("temp.dat").first.to_i 
puts "The number is #{celsius}..." 

如果你看看你讀它可能是有意義的:

puts num.inspect 
# => "20\n" 
3

想必TEMP.DAT以換行符結束, num包含換行符。要刪除換行符,可以使用String#chomp方法,該方法刪除字符串末尾的任何換行符。

2

我的猜測是,換行是從文件

未來如果是這樣那麼

puts "The number is #{num.strip}..." 

應該修復它的情況。

0

既然你想讀一個整數,我知道從文件中讀取單號最簡單的方法是:

File.read('temp.dat').to_i 
# => 42 

to_i將解析,直到第一個非數字這將是「 \ N」。此時它將停止讀取,並只返回值,轉換爲整數。

這樣做,可以讓你清理你的代碼,將其降低到:

puts "Hello! Reading temperature value from data file..." 
celsius = File.read("temp.dat").to_i 
puts "The number is #{ celsius }..." 
fahrenheit = (celsius * 9/5) + 32 
puts "The Fahrenheit value is: #{ fahrenheit }." 

這是沒怎麼看,一般一個文件,它只是一個回答這個特定問題。