我有以下代码。我想要做的是计算特定角色的频率,但我无法做到。任何人都可以提供任何提示吗?
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");
}
}
}
答案 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())