gpt4 book ai didi

ruby - 使用 Integer 类和多种方法将 Integer 转换为 Octal

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:03 26 4
gpt4 key购买 nike

我启动了一个脚本,但收到一条错误消息。我通常有正确的想法,但语法或格式不正确。

以下是给出的确切说明:
通过添加一个名为 to_oct 的方法来扩展 Integer 类,该方法返回一个表示八进制整数的字符串。我们将在类里面讨论该算法。提示用户输入一个数字并输出 to_oct 返回的八进制字符串。

向名为“to_base”的整数扩展添加另一个方法。此方法应采用一个参数,指示数字应转换为的基数。例如,要将数字 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)

最佳答案

按照建议,做这样的事情:

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"

关于ruby - 使用 Integer 类和多种方法将 Integer 转换为 Octal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40776438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com