2011-05-10 5 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

+0

Ruby 디버깅을 처음 접하는 경우 http://stackoverflow.com/questions/3955688/how-do-i-debug-ruby-scripts를 참조하십시오. –

답변

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

파일을 읽을 때 파일에서 캐리지 리턴/개행 문자도 읽게됩니다. 이 여분의 불필요한 공백을 제거하는 String#chomp를 사용

num = File.read("temp.dat").chomp 
puts "The number is #{num}..." 

자세한 내용은 http://ruby-doc.org/core/classes/String.html#M001188를 참조하십시오. 당신은 내가 파일에서 하나의 숫자를 읽을 알고있는 간단한 방법은 정수를 읽기 위해 노력하고 있기 때문에

0

은 다음과 같습니다

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

to_i가 될 것이라고이 아닌 첫 번째 자리까지 분석 할 것 " \엔". 그 시점에서 읽기를 멈추고 정수로 변환 된 값만 반환합니다. 그것은이 특정 질문에 그냥 대답, 이것은 일반적으로 파일을 읽는 방법이 아니다

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 }." 

: 그 수행

당신은 당신의 코드를 청소하고 그것을 줄일 수 있습니다.

관련 문제