2012-02-22 58 views
0

如果我給出的輸入爲1或2,無論程序如何默認。嘗試將輸入與「1」和1兩者進行比較。同樣的結果。 我的第一個Ruby程序,plz對於天真的藉口。程序沒有在Ruby中的if-else塊中輸入

$choice 

def getInfo 
    puts "Info" 
end 

def getMoreInfo 
    puts "MoreInfo" 
end 


def switch 
     if $choice == "1" #intentionally in "" 
      getInfo 
     elsif $choice == 2 #intentionally without "" 
      getMoreInfo 
     else 
      puts "default" 
     end 
end 


def callMainMenu 
     puts "Choose the operation:" 
     puts "[1] Get some Info" 
     puts "[2] Get some moreInfo" 
$choice=gets 
$choice.chomp 
end 


callMainMenu 
switch 
+0

非常感謝你:)大家都在努力......選擇「bdon」作爲答案,因爲它是第一個回覆!謝謝你們!! – 2012-02-22 22:03:20

+0

作爲ruby風格的問題...只是不使用全局'$'。 – DGM 2012-02-22 23:15:21

回答

2

如果您要像這樣指定,您需要使用chomp的破壞性版本。

$choice.chomp! 

或者

$choice = $choice.chomp 
2

爲了調試這一點,我會做的是在你switch方法的開頭添加puts $choice.inspect,看看到底是什麼在變。這就是說,我相信這裏的問題是你打電話$choice.chomp而不是。前者將返回結果,後者將更改該變量。

2

當你將$choice.chomp更改爲,並擺脫//(將其更改爲#),那麼你將有一些工作。繼續精煉它,它還不完美。

2

使用。沒有!不會改變$選擇。它返回一個新的字符串。這是Ruby中的一個命名約定。