2014-11-03 22 views
0

所以這應該是一個方法,告訴你如果在每個字母(a-z)之後的AND之前有一個+符號。無法弄清楚爲什麼它總是返回false。如果輸入爲+d+,那麼它應該返回true的示例。如果輸入是+d+dRuby:創建一個符號搜索方法

def SimpleSymbols(str) 
    idx = 0 
    while idx < str.length 
    if str[idx].ord > 96 && str[idx].ord < 123 
     return false if str[idx - 1] != "+" || str[idx + 1] != "+" 
    end 

    idx += 1 
    end 
    return true 
end 

SimpleSymbols(STDIN.gets)   
+1

這對我來說工作得很好。你使用的是什麼版本的紅寶石? – bmat 2014-11-03 02:37:45

+0

也適用於我 – Anthony 2014-11-03 02:38:29

+0

哈哈哇。我正在使用coderbyte.com,來應對挑戰。我應該發送鏈接嗎? – ChrisWilson 2014-11-03 02:43:35

回答

0

這對我來說會返回true。但是我想知道你是否遇到了線路終端問題?由於得到()保持線路終端,做這些兩行返回環境:

SimpleSymbols("+d+d") 

SimpleSymbols("+d+d\n") 

?這可能會提供一個指向你的問題的指針。

0

當您啓動循環並將idx設置爲0時,「str [idx - 1]」將等於-1。設置語句來檢查最後一個字符而不是第一個字符。

如果str [idx - 1]!=「+」||返回false str [idx + 1]!=「+」

因此,「f ++ d +」會傳遞爲TRUE,而它實際上是false。

GL