计算Java中特定字符的频率

时间:2012-06-28 06:12:15

标签: java

我有以下代码。我想要做的是计算特定角色的频率,但我无法做到。任何人都可以提供任何提示吗?

import java.io.*;
import java.lang.*;
public class Mywork {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
        // TODO code application logic here
        try {
            String str;
            System.out.println("Enter a String:");
            DataInputStream d=new DataInputStream(System.in);
            str=d.readLine();
            int count=0;
            System.out.println("You Entered  "+str);
            char a[]=new char[str.length()];
            int i=0;
            System.out.println("enetr the characte of which frequency is to be count:");
            char c=(char)d.read();
            System.out.println("you entered "+c);
            while(str!=null){
                if(str.charAt(i)==c){
                    count++;
                } else {
                    i++;
                }
                i++;
            }   
            System.out.println("Frequency of character "+c+"is "+count);
        } catch(Exception e){
            System.out.println("I/O Error");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

使用此

public static int countOccurance(String inputString, String key) {
    int index = 0;
    int fromIndex = 0;
    int result = 0;

    if (inputString == null || key == null) {
        return 0;
    }

    while ((index = inputString.indexOf(key, fromIndex)) != -1) {
        result++;
        fromIndex = index + key.length;
    }
    return result;
}

答案 1 :(得分:1)

在你的循环中,你不需要else部分。

 while(i < str.length()){
     if(str.charAt(i)==c){
         count++;
     } 
     i++;
 }   

还需要将str!= null更改为i&lt; strrlength(

建议的str.length()

好奇为什么你在使用DataInputStream.readLine。我看到已被弃用。

答案 2 :(得分:0)

条件是检查i是否仍然小于字符串的长度(这是最后一个索引+ 1)。所以,替换

while(str!=null)

while (i < str.length())