我已启动脚本但收到错误消息。我通常有正确的想法,但语法或格式不正确。
以下是给出的确切说明:
通过添加一个名为to_oct的方法来扩展Integer类,该方法返回一个表示八进制整数的字符串。我们将在课堂上讨论该算法。提示用户输入数字并输出to_oct返回的八进制字符串。
向名为“to_base”的Integer扩展添加另一个方法。此方法应采用一个参数,指示应将数字转换为的基数。例如,要将数字5转换为二进制,我会调用5.to_base(2)。这将返回“101”。假设to_base的输入参数是一个小于10的整数.to_base应返回一个字符串,表示请求的数字基数中的小数。
#!/usr/bin/ruby
class Integer
def to_base(b)
string=""
while n > 0
string=(n%b)+string
n = n/b
end
end
def to_oct
n.to_base(8)
end
end
puts "Enter a number: "
n=gets.chomp
puts n.to_base(2)
当我运行脚本时,我确实输入了一个数字提示,但后来我收到了这条错误消息:
tryagain.rb:16:in `<main>': undefined method `to_base' for "5":String (NoMethodError)
答案 0 :(得分:0)
根据建议,做一下这样的事情:
class Integer
def to_base b
to_s b #same as self.to_s(b)
end
def to_oct
to_base 8 #same as self.to_base(8)
end
end
5.to_base 2 #=> "101"
65.to_oct #=> "101"