You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中使用to_s(2)转换变量为二进制时报错求助

解决Ruby字符串转二进制的参数错误问题

嘿,这个错误我太熟悉了!让我帮你快速定位问题并解决~

错误原因分析

你写的代码里,num1 = gets获取到的是字符串类型的值——哪怕用户输入的是数字,Ruby也会把它当作字符串存储。而字符串的to_s方法是不需要参数的,你给它传了(2),这就触发了wrong number of arguments (1 to 0)的错误。

修正方案

你需要先把输入的字符串转换成整数(因为要转二进制,整数类型才有带参数的to_s(base)方法),再调用to_s(2)来转二进制。另外建议加上chomp去掉输入末尾的换行符,让代码更严谨:

puts "Tell me a number:"
num1 = gets.chomp.to_i  # 先去掉换行符,再转成整数类型
puts "The number you gave in binary is " + num1.to_s(2)

补充说明

  • chomp:用来移除gets读取到的换行符(用户输入完按回车会产生这个字符),虽然直接用to_i也能自动忽略换行符,但加上它能避免一些场景下的意外问题。
  • to_i:把字符串转换成整数,这样后续调用to_s(2)时,就会调用整数的to_s方法——这个方法接受一个参数(进制数),用来将整数转换成对应进制的字符串。

比如用户输入10,运行代码后会输出:The number you gave in binary is 1010,完美符合你的需求~

内容的提问来源于stack exchange,提问作者user3468632

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:20:20