Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 正在尝试将数字转换为二进制形式_Ruby - Fatal编程技术网

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”
,这使得这个方法非常方便。这是最终的方法。谢谢你的详细解释。非常感谢!=)