试图将数字转换为二进制形式

时间:2014-06-18 20:02:02

标签: 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) (ArgumentError)

3 个答案:

答案 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