2016-09-22 84 views
0

在此代碼中,我試圖刪除單詞中的最後一個元音。有一次,我跑的代碼,我收到一個參數錯誤,指出「使用Array Fixnum對象的比較失敗(引發ArgumentError)。請幫助!`<=':Fixnum與Array的比較失敗(ArgumentError)

VOWELS = %w(a e i o u) 

def hipsterfy(string) 

    new_string = string.split('') 

    reversed_string = new_string.reverse 

    i = 0 

    while i <= reversed_string 

    if VOWELS.include?[i] 

     reversed_string[i] = ('') 

    i += 1 
    end 
    reversed_string 
    end 

    reversed_string.reverse 

end 
+0

提示:如果元音用完了'i'會增加?您還需要深入研究正則表達式,或者至少需要['tr'](https://ruby-doc.org/core-2.2.0/String.html#method-i-tr)方法。 – tadman

+0

正確的縮進幾乎肯定會對您有所幫助。 – pjs

+0

雖然它不能回答你的問題,但你的問題在[這個SO問題]中得到解決(http://stackoverflow.com/questions/39628583/how-do-i-remove-the-last-vowel-in-a-字符串在旁註)。 –

回答

1

我敢肯定這是不是與此代碼的唯一glith,但錯誤你GOT從這裏走過:

while i <= reversed_string 

它可能應該是

while i < reversed_string.length 

因爲reversed_array是一個數組,你可能想比較i反對它是length

1

當您測試

if VOWELS.include?[i] 

你檢查是否VOWELS恆包括數組索引。你想看看字符串中的那個字母,對吧?

if VOWELS.include?(reversed_string[i]) 
+0

哇,這真的很有幫助!謝謝! –

0

在if語句結束第一個元音後立即停止循環,需要有一個「break」語句。這將阻止它進入下一個元音。問題解決了。