Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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_Integer - Fatal编程技术网

Ruby只为字符串获取/放置?

Ruby只为字符串获取/放置?,ruby,integer,Ruby,Integer,我是Ruby新手,目前正在编写一些练习代码,如下所示: puts 'Hello there, Can you tell me your favourite number?' num = gets.chomp puts 'Your favourite number is ' + num + '?' puts 'Well its not bad but ' + num * 10 + ' is literally 10 times better!' 但是,这段代码只放置了num变量的十个副本,实际

我是Ruby新手,目前正在编写一些练习代码,如下所示:

puts 'Hello there, Can you tell me your favourite number?'
num = gets.chomp
puts 'Your favourite number is ' + num + '?'
puts 'Well its not bad but  ' + num * 10 + ' is literally 10 times better!'

但是,这段代码只放置了num变量的十个副本,实际上并没有乘以这个数字,所以我假设我需要将'num'变量设置为整数?我在这方面没有成功,所以有人能告诉我哪里出了问题吗?

使用
to_I
方法将其转换为整数。换言之,改变这一点:

num = gets.chomp
为此:

num = gets.chomp.to_i

如果您使用的是
to_i
,那么之前的
chomp
是多余的。因此,您可以:

puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts 'Your favourite number is ' + num.to_s + '?'
puts 'Well its not bad but  ' + (num * 10).to_s + ' is literally 10 times better!'
但是一般来说,使用
“#{}”
更好,因为您不必关心
到_s
,而且它运行得更快,更容易查看。方法
String#+
特别慢

puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts "Your favourite number is #{num}?"
puts "Well its not bad but  #{num * 10} is literally 10 times better!"

您还可以通过以下方式确保用户使用的数字是整数:

num = Integer(gets.chomp)
但是您必须创建一种方法来捕获错误,以防用户输入字符或字符串之类的错误;最好使用:

num = gets.chomp.to_i
如果用户输入了另一种类型的数据,num将等于0,如您在本测试示例中所见:

puts "give me a number:"
num = gets.chomp.to_i
if num >3
 puts "#{num} es mayor a 3 "
else 
 puts "#{num} es menor a 3 o 3"
end
这是与该脚本交互的一个示例:

give me a number:
 sggd
0 es menor a 3 o 3
nil

我希望这能更好地阐明你的观点。

我编写了一个与你类似的程序。下面是我最终如何让它正常工作的!我必须将最喜欢的数字指定为整数。然后,在下一行中,我使用fav_num+1的值设置新的_fav_num,然后将其转换为字符串。之后,您只需将代码插入要对用户说的return语句,只需将第一个fav_num转换为字符串

显示“你最喜欢的号码是什么?”
fav_num=gets.chomp.to_i
new_fav_num=(fav_num+1)。到
把“你最喜欢的号码是”+fav_num.to_s+”。这还不错,但是+

new_fav_num+“更大更好!”
我确实尝试过,但我得到了相同的错误:“RubyTest.rb:3:in`+':无法将Fixnum从RubyTest.rb转换为字符串(TypeError):3@AppSlap:哎呀,我以为Ruby在连接字符串和整数时可能会隐式强制转换。当您需要将
+
与字符串和整数一起使用时,请首先将整数转换为带有
to_s
的字符串。例如:
把“你的号码是”+num.to_s+”
@icktoofay谢谢你这么说,但我还是收到了同样的错误。我的代码现在看起来是这样的:“你好,你能告诉我你最喜欢的号码吗?”num=gets.chomp.to_我把“你最喜欢的号码是”+num.to_s+”?“+”这还不错,但“+num*10+”确实好10倍@AppSlap:
..+(num*10).to_s+'.
@AppSlap:请注意,如果使用
{}
而不是
+
,则不需要使用
to_s
,这在ruby.num=gets.chomp.to_i或num.to_i*10(代码中较低)中通常是首选使用
整数(gets.chomp)的一点
事实上,这是一个很好的方法,可以确保你真的得到一个整数<代码>开始;打印“输入一个数字”;num=整数(gets.chomp);补救错误;写上“那不是一个数字,再试一次”;重试;结束;放置数值>3?“{num}大于3”:“{num}小于3或3”