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
相关产品推荐
相关产品推荐

