2014-10-19 87 views
-1

我想要統計字符串中每個字符出現的次數。什麼是計算字符串中字符頻率最簡單的方法?

這是我到目前爲止有:

 Scanner input = new Scanner(System.in); 
     PrintStream out = System.out; 
     out.print("Enter the string : "); 
     String na = input.nextLine(); 
     String n = na.toUpperCase(); 
     int l = n.length() ; 
     int len = l; 
     int a1 =0 , b =0, c =0, d=0 , e =0 ,f=0 ,g =0 ,h =0, u=0 ,i1 =0,j=0 ,k=0 ,l1=0 ,m=0, n1=0, o=0, p=0, q=0,r=0,s=0, t1=0 , v=0, w=0, x=0, y=0, z = 0; 


     for (int i = 0; i< len ; i++) 
     { 
      char a = n.charAt(i); 

      if(n.charAt(i) =='A') 
      { 
       a1++; 
       } 
      else if(n.charAt(i) =='B') 
      { 
        b++; 
      } 
      else if(n.charAt(i) =='C') 
      { 
       c++; 
       } 
      else if(n.charAt(i) =='D') 
      { 
       d++; 
       } 
      else if(n.charAt(i) =='E') 
      { 
       e++; 
       } 
      else if(n.charAt(i) =='F') 
      { 
       f++; 
       } 
      else if(n.charAt(i) =='G') 
       { 
        g++; 
        } 
       else if(n.charAt(i) =='H') 
        { 
         h++; 
        } 
        else if(n.charAt(i) =='I') 
        { 
          i1++; 
         } 
        else if(n.charAt(i) =='J') 
         { 
         j++; 
         } 
        else if(n.charAt(i) =='K') 
        { 
         k++; 
        } 
        else if(n.charAt(i) =='L') 
        { 
         l++; 
         } 
        else if(n.charAt(i) =='M') 
        { 
         m++; 
         } 
        else if(n.charAt(i) =='N') 
        { 
         n1++; 
         } 
        else if(n.charAt(i) =='O') 
        { 
         o++; 
         } 
        else if(n.charAt(i) =='P') 
        { 
         p++; 
         } 
        else if(n.charAt(i) =='Q') 
        { 
        q++; 
        } 
        else if(n.charAt(i) =='R') 
        { 
         r++; 
        } 

     } 
    out.print(a1+"A" +b+"B"+c+"C"+d+"D"+e+"E"+f+"F"+g+"G"+h+"H"+i1+"I"+j+"J"+k+"K"+l1+"L"+m+"M"+n1+"N"+o+"O"+p+"P"+q+"Q"+r+"R"); 
    } 

} 

回答

2

使用實現Map接口的類。將每個Char映射到代表Char出現多少次的Integer。遍歷字符串,遞增字符映射中的計數。

4

你或許可以使用地圖界面,做這樣的事情如下:

Map<Character,Integer> map = new HashMap<Character,Integer>(); 
for (int i = 0; i < s.length(); i++) { 
    char ch = s.charAt(i); 
    if (map.containsKey(ch)) { 
    int cnt = map.get(ch); 
    map.put(ch, ++cnt); 
    } else { 
    map.put(ch, 1); 
    } 
} 

這將計算所有的字符,給你計數。

0

如果我理解你的問題,那麼你可以使用一組int來存儲你的計數。然後根據字符值計算正確的位置。類似於

​​
0
String na = "A MixXx of LeTTers"; 
    char lowercase = 'a'; 
    char uppercase = 'A'; 

    for(int i=0; i < 26; i++){ 

     int count_of_tagert_lower = 0; 
     int count_of_tagert_upper = 0; 
     for(String str : na.split("")){ 
      if (str.contains(String.valueOf(lowercase))){ 
       count_of_tagert_lower++; 

      } 
      else if (str.contains(String.valueOf(uppercase))){ 
       count_of_tagert_upper++; 

      }else{ 
       //just in case? 

      } 


     } 
     System.out.println(String.valueOf(lowercase) + " occured " + count_of_tagert_lower); 
     System.out.println(String.valueOf(uppercase) + " occured " + count_of_tagert_upper); 
     uppercase++; 
     lowercase++; 

    } 

} 
相關問題