Ваша проблема в том, что ваш x = gets.chomp
является строкой.
И вы пытаетесь снова преобразовать его в строку: x.to_s(2)
.
Но если вы прочитаете документацию Метод String .to_s
не имеет аргументов и возвращает self.
Но метод Fixnum .to_s
имеет аргумент.Так что вы можете прочитать это здесь .И он конвертирует число в выбранную систему.Результат - String.
Таким образом, ваш код будет работать:
print "Enter decimal number to convert: "
x = gets.to_i
sys = nil
until (1..3).include?(sys)
print "Select numeral system. 1. Binary. 2. Octal. 3. Hexadecimal. "
sys = gets.to_i
end
if sys == 1
y = x.to_s(2)
s = "binary"
elsif sys == 2
y = x.to_s(8)
s = "octal"
else
y = x.to_s(16)
s = "hexadecimal"
end
puts "#{x} in #{s} system is #{y}."
Кстати, ваша sys = gets.chomp.to_s
не очень хорошая идея, sys = gets.chomp
достаточно.
Надеюсь, это помогло вам.И я проголосовал за твой вопрос.Я тоже новичок.Но я думаю, что этот сайт предназначен для того, чтобы помогать другим людям, а не для того, чтобы обсуждать вопросы