2012-04-05 112 views
1

試圖在這裏寫一個簡單的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

回答

1

您在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

2
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