2014-11-16 63 views
0

程序檢查字符串中的第一個字符是否是標點符號,如果是,則刪除該字符並返回新字。檢查字符是否爲標點符號

public static String checkStart(String word){ 
    char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('}; 
    int i; 

    for (i = 0; i < punctuation.length;i++){ 
     if(word.charAt(0) == punctuation[i]){ 
      word = word.substring(1); 
     }  
    } 
    return word; 
} 

爲什麼不起作用?

這裏是方法調用者

public static String[] removePunctuation(String [] words){ 
    int i, j; 

    for (i = 0; i < words.length;i++){ 
     words[i] = checkStart(words[i]); 
    } 
    return words; 
} 

}

+1

看到你的標點符號數組的問題是與此。 – sumanta

+0

什麼是不工作?你有錯誤嗎? – furkle

+0

該程序將運行,但它會給出NullPointerException異常 並且它不會刪除第一個字符,adasd仍將是asdasd – newbie

回答

1

爲我工作。

public static void main(String[] args) { 
    System.out.println(checkStart(",abcd")); 
} 

輸出:

abcd 

你可能在你主要方法的錯誤。

0

我把你的代碼放到我的NetBeans和它似乎運行正常:

public class Test{ 
    public static String checkStart(String word){ 
     char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('}; 
     int i; 

     for (i = 0; i < punctuation.length;i++){ 
      if(word.charAt(0) == punctuation[i]){ 
       word = word.substring(1); 
      }  
     } 
     return word; 
    } 

    public static void main(String args[]){ 
     System.out.println(checkStart("test")); 
     System.out.println(checkStart("!test")); 
     System.out.println(checkStart(";test")); 
     System.out.println(checkStart("(test")); 
    } 
} 

這不得不輸出:

測試

測試

測試

測試

0

我不完全清楚,但我想你想在一些特定字符後得到字符串。 所以我改變了下面的代碼。

package org.owls.test; 

public class CheckStart { 
    private static String checkStart(String word){ 
     char [] punctuation = {'.' , ',' , ';' , ':', '?' , '!' , '"' , '\'' , ')' , '('}; 
     int i; 

     for (i = 0; i < punctuation.length;i++){ 
      for(int j = 0; j < word.length(); j++){ 
       if(word.charAt(j) == punctuation[i]){ 
        word = word.substring(j); 
       }  
      } 
     } 
     return word; 
    } 

    public static void main(String[] args) { 
     System.out.println(checkStart("gasf;dgjHJK")); 
    } 
} 

所以你可以得到'; dgjHJK'作爲回報​​。如果有多個關鍵字,並且只想從第一個開始子串,則在checkStart中將break;添加到第二個循環。

祝您有美好的一天!檢查

+0

您在子串參數中將'j'更改爲'j + 1' –

1

計劃,如果字符串中的第一個字符是一個標點符號

這其實並不完全做到這一點。想想如果你輸入「。,; Hello」會發生什麼 - 在這種情況下,你會回到「你好」。另一方面,如果您輸入「;,。Hello」,您將返回「,.Hello」 - 這是因爲您按順序遍歷數組,並且在第一種情況下,標點按照正確的順序排列每個符號都要被捕獲,但在第二種情況下,當您查看標點符號[0]或標點符號[1]時,逗號和句號都不是零。我不確定這些行爲之一是否是你發現的錯誤,但我認爲其中至少有一個是不正確的。