2014-04-01 67 views
0

我做了一個方法來從字符串中刪除一些標點符號,但它只是返回在參數w /標點符號中傳遞的字,任何人都可以發現有什麼問題嗎?java刪除標點符號遞歸方法

public static String removePunctuation(String word) { 

    if (word.charAt(0) >= 32 && word.charAt(0) <= 46) { 
     if(word.length() == 1){ 
      return ""; 
     } else { 
     return removePunctuation(word.substring(1)); 
     } 
    } else { 
     if(word.length() == 1){ 
      return "" + word.charAt(0); 
     } else { 
     return word.charAt(0) + removePunctuation(word.substring(1)); 
     } 
    } 
}//end method 
+1

請使用這些東西的調試器;他們旨在解決這種確切的問題。 –

+1

順便說一下,如果您的基本情況是空字符串,而不是其中包含1個字符的字符串,則可以簡化此操作。然後它變成了'if(word.isEmpty())返回單詞; ......'並且你擺脫了討厭的嵌套'如果'。 –

+1

請提供示例輸入和輸出,以便我們看到結果。 – leigero

回答

4

我跑你提供的輸入代碼:

h.ello,並得到了輸出hello

我在這裏看到一個全功能的方法。我認爲您試圖刪除的標點符號不是您在if語句中提供的ASCII範圍的一部分。根據圖表檢查你的ASCII值。

ASCII values chart to compare with

不包括正確值的輸入:

h[ello將返回輸出h[ello因爲[是ASCII碼值91,這是你所提供的範圍之外: >= 32 && <= 46

1

算法沒有問題。很可能你的範圍(32-46)不包括你想要刪除的所有標點符號。例如,?是63,所以它不會被刪除。