简单的Ruby程序...需要帮助

问题描述:

试图在这里写一个简单的Ruby程序。我试图让程序要求用户最喜欢的号码,然后建议一个新的最喜欢的号码。下面的代码有什么问题?简单的Ruby程序...需要帮助

puts "hey, whats your favorite number?" 

favnumber = gets.chomp 

newfavnumber = favnumber.to_i + 1 

puts "how about " + newfavnumber "?" 
+3

这很容易,但在未来,最好还包括你得到的_error message_。 – sarnold 2012-04-05 23:56:26

您在newfavnumber之后缺少+并且转换为字符串。

puts "how about " + newfavnumber.to_s + "?" 
+1

我错过了什么吗?将'Fixnum'添加到'String'?我认为你必须这样做:'puts“#{newfavnumber}?'' – Linuxios 2012-04-06 01:18:27

+0

@ Linux_iOS.rb.cpp.c.lisp.m.sh:不。我不知道Ruby。无论如何,我会把它放进去,但是......我没有。叹。 – Ryan 2012-04-06 13:37:45

puts "how about " + newfavnumber "?" 

首先,你可能希望"?"有前+。现在写这个的方式,它解析为puts("how about " + newfavnumber("?")),即你正在调用一个名为newfavnumber的函数,这显然不是你想要的。

但是,如果您将其更改为puts "how about " + newfavnumber + "?",您推测它打算使用它,它仍然不起作用:newfavnumber是一个数字,"how about "是一个字符串。在红宝石中,你不能将数字添加到字符串。要解决这个问题,你可以拨打to_snewfavnumber将其转换为字符串。

写一个更好的方法是使用字符串插值:puts "how about #{newfavnumber}?"。这样您不需要拨打to_s,因为您可以使用#{}内的任何类型。

+0

真棒,超级有用的家伙。非常感谢。 – bclayman 2012-04-06 00:11:54

+0

另外,如何在字符串之间获得空格。如果我定义名字和姓氏,我如何得到放入firstname + lastname,使其显示“firstname lastname”而不是“firstnamelastname”?再次感谢你们。 – bclayman 2012-04-06 00:18:20

+0

@Mariogs'puts“#{firstname}#{lastname}”' – sepp2k 2012-04-06 00:22:31