我写了一个简单的程序:
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)
答案 0 :(得分:1)
你是从一个字符串开始的,所以你需要转换它:
i.to_i.to_s(2)
字符串上的#to_s
方法不带任何参数。
答案 1 :(得分:1)
您不需要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
,而不是integer
,因为Kernel#gets
始终会为您提供 String 对象。
首先,将其转换为Fixnum
,然后在Fixnum
实例上调用Fixnum#to_s
,该实例采用参数,但String#to_s
不会&# 39; t接受参数,这就是你收到Ruby投诉的原因。
答案 2 :(得分:0)
您似乎想要使用Fixnum#to_s
,但在您的计划中gets.chomp
会返回一个字符串,因此您实际上会调用String#to_s
你可以这样做:
i = gets.chomp.to_i