Почему три точки записаны в новой строке? - PullRequest
0 голосов
/ 10 мая 2011
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 ]

5 голосов
/ 10 мая 2011

Когда вы читаете в файле, вы также получаете переводы строк. Может быть, то, что вы ищете, это:

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

Если вы посмотрите на то, что читаете, это может иметь смысл:

puts num.inspect
# => "20\n"
3 голосов
/ 10 мая 2011

Предположительно, temp.dat заканчивается символом новой строки, num содержит символ новой строки. Чтобы удалить символ новой строки, вы можете использовать метод String#chomp, который удаляет любой символ новой строки в конце строки.

2 голосов
/ 10 мая 2011

Я думаю, что новая строка приходит из файла

Если это так, то

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

должно это исправить.

0 голосов
/ 09 ноября 2015

Поскольку вы пытаетесь прочитать целое число, я знаю, что самый простой способ прочитать одно число из файла:

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

Это НЕКак читать файл в целом, это просто ответ на этот конкретный вопрос.

0 голосов
/ 10 мая 2011

Когда вы читаете файл, вы также читаете возврат каретки / перевод строки в файле.Используйте String#chomp для удаления лишних лишних пробелов:

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

См. http://ruby -doc.org / core / classes / String.html # M001188 для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...