Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:输出未保存到文件_Ruby - Fatal编程技术网

Ruby:输出未保存到文件

Ruby:输出未保存到文件,ruby,Ruby,我试图将一个文件作为输入,在程序中对其进行更改,并将结果保存到输出文件中。但输出文件与输入文件相同。:/总n00b问题,但我做错了什么 puts "Reading Celsius temperature value from data file..." num = File.read("temperature.dat") celsius = num.to_i farenheit = (celsius * 9/5) + 32 puts "Saving result to output file '

我试图将一个文件作为输入,在程序中对其进行更改,并将结果保存到输出文件中。但输出文件与输入文件相同。:/总n00b问题,但我做错了什么

puts "Reading Celsius temperature value from data file..."
num = File.read("temperature.dat")
celsius = num.to_i
farenheit = (celsius * 9/5) + 32
puts "Saving result to output file 'faren_temp.out'"
fh = File.new("faren_temp.out", "w")
fh.puts farenheit
fh.close

我已经在我的机器上测试了代码,并且正确地获得了“faren_temp.out”文件。没什么不对吗

温度.dat

23
73
73.4
faren\u温度输出

23
73
73.4
你只是在结果中遇到了问题。“摄氏度”必须是浮点变量才能进行浮点除法(而不是整数除法)

faren\u温度输出

23
73
73.4
那么:

puts "Reading Celsius temperature value from data file..."
farenheit = 0.0
File.open("temperature.dat","r"){|f| farenheit = (f.read.to_f * 9/5) + 32}
puts "Saving result to output file 'faren_temp.out'"
File.open("faren_temp.out","w"){|f|f.write "#{farenheit}\n"}

您应该利用将块传递给
文件
的优势,以便它自动为您丢失文件。请参见,并在其中搜索块的使用方式。文件继承自IO,因此您将自动获得许多很酷的Ruby特性。该值在temperature.dat-40中吗?:-)输入文件中有什么,输出文件中有什么?@matt,no:P!@安德鲁·格林,我解决了这个问题。我看错了文件,像个白痴:)但我有一个问题:为什么fh=file.new行中的“w”?它表示您正在
w
写入文件,而不是读取文件。正如所提供的链接@the Tin Man中提到的。因为一个整数除以另一个整数返回一个整数。5/3 = 1 ; 5.0/3.0=1.666……重点不是要准确,而是要让它发挥作用P不过,谢谢,浮动更适合此应用程序