Ruby 正在尝试将数字转换为二进制形式
我写了一个简单的程序:Ruby 正在尝试将数字转换为二进制形式,ruby,Ruby,我写了一个简单的程序: a = 4.to_s(2) puts a.reverse 我希望能够根据终端中用户的输入进行更改。这是我写的: puts 'Please enter a number you would like to see expressed in binary form' i = gets.chomp b = i.to_s(2) puts b 这是我一直得到的错误: `to_s': wrong number of arguments(1 for 0) (Argumen
a = 4.to_s(2)
puts a.reverse
我希望能够根据终端中用户的输入进行更改。这是我写的:
puts 'Please enter a number you would like to see expressed in binary form'
i = gets.chomp
b = i.to_s(2)
puts b
这是我一直得到的错误:
`to_s': wrong number of arguments(1 for 0) (ArgumentError)
您以字符串开头,因此需要将其转换为:
i.to_i.to_s(2)
字符串上的
#to_s
方法不带任何参数。似乎您想使用Fixnum\to_s
但是在您的程序中get.chomp
返回一个字符串,所以您实际上调用了string\to_s
你可以做:
i = gets.chomp.to_i
您不需要使用
chomp
方法,#to_i
将处理它
写为:
puts 'Please enter a number you would like to see expressed in binary form'
i = gets.to_i
b = i.to_s(2)
puts b
您在字符串上调用to_s
,而不是像您所想的那样在整数上调用,因为内核#get
总是给您一个字符串对象
首先,将其转换为Fixnum
,然后调用Fixnum
实例,该实例接受一个参数,但不接受参数,这就是为什么您收到Ruby的投诉。更改它意味着什么<代码>4
或2
?@ArupRakshit,抱歉,在意外完成之前发布了问题。现在它更完整了。你为什么会认为Fixnum\u#s
被重新定义了?(6*9)。to_#s(13)
返回“42”
,这使得这个方法非常方便。这是最终的方法。谢谢你的详细解释。非常感谢!=)