2014-10-04 139 views
0

我試圖計算字符串中字母的出現次數,但我用數字替換它們以使其更清晰。然後當我運行該代碼時,它不顯示我想要的結果。我真的不知道爲什麼...請幫助!非常感謝!!計算字符串中字符的出現次數

Scanner Scanner1 = new Scanner(System.in); 
    out.println("Please type in a string below."); 
    String UserInput = Scanner1.nextLine(); 
    String Index = "12345"; 
    int length = 2;//Modified 
    int[] count = new int[length]; 
    int length2 = 5; //Modified 
    int n1 = 0; 
    int n2 = 0; 
    out.println(UserInput.charAt(n1));//Modified 
    out.println(Index.charAt(n2));//Modified 
    for (int i = 0; i < length; i++) { 
     if (UserInput.charAt(n1) == Index.charAt(n2)) { 
      n1++; 
      count[length - (length - n1)]++; 

     } else { 
      n2++; 
      if(n2==length2) 
      { 
       n2 = n2-length2; 
      } 
     } 
    } 
+3

*但我用數字替換它們使其更清晰*:對我來說根本不清楚。這個計劃應該做什麼?從你的問題的標題,你應該有一個具有以下簽名的方法:'int countOccurrences(char ofChar,String inString)'。嘗試實施。你需要一個計數器和一個循環。 – 2014-10-04 07:20:32

回答

2

相對短的和簡潔的方式來計算在字符串中的特定字符是使用replaceAll方法的返回值:

public static int countChar(final String str, final char c) { 
    return str.replaceAll("[^" + c + "]","").length(); 
} 

圖案[^x]x可以與任何字符被替換(或數量不同的字符))將匹配給定字符串中的所有內容,除了x。因此的TEST將替換ES與給定的替換(這是""(無))並保留T s。該方法將返回TT。如果您計算該長度,您將收到給定字符串的搜索字符數。

示例

System.out.println(countChar("TEST", 'T')); 
System.out.println(countChar("TEST", 'E')); 
System.out.println(countChar("TEST", 'S')); 

打印

2 
1 
1 

(記住,是方法區分大小寫)

+0

非常感謝你! :) – Danny 2014-10-04 13:37:52

0

使用集合像HashMap中。這裏Character存儲遇到的每個唯一字符,Integer存儲每個字符遇到的計數。

相關問題