在一个字符串中计算出现过几次另一个字符串的几率,下面这个计算不出来:public class Array_list {
public static void main(String[] args){

String b="xyzxxyzzyxyzxxyyxyz";
char []s = b.toCharArray();
int count=0;

for(int i = 0;i<s.length;i++){
 if(String.valueOf(s[i]).equals("xyz")){
count++;
}
}
System.out.println("The number of 'xyz'is: "+count);
}
}

解决方案 »

  1.   

    出错的原因是你用数组来装 s[0]={"x"},s[1]={"y"},s[2]={"z"} ......
    用这个和xyz比较 当然结果会是0
    以下是我重写的方法
    用容器储存字符串 可以得到结果import java.util.*;public class Array_list {
    public static void main(String[] args) { String b = "xyzxxyzzyxyzxxyyxyz";
    char[] s = b.toCharArray();
    int count = 0;
    List<String> c = new ArrayList<String>();
    for(int j=0; j < (s.length-2); j++){
    String str = null;
    str = String.valueOf(s[j])+String.valueOf(s[j+1])+String.valueOf(s[j+2]);
    c.add(str);
    }

    for(int i=0; i < c.size(); i++) {
    System.out.println(c.get(i));
    if (c.get(i).equals("xyz")) {
    count++;
    }
    }
    System.out.println("The number of 'xyz'is: " + count);
    }
    }
      

  2.   

    List <String> c = new ArrayList <String>(); 
    红色部分是范型 好像jdk老的版本不支持这样写 如果这句话出错的话把红色部分去掉也还是可以运行的
      

  3.   

    正则在这方面是专家呀,不用怪可惜的。 public static void main(String[] args) {
    String b="xyzxxyzzyxyzxxyyxyz";
    int count=0;
    String queryString = "xyz";//需要查找的字符串
    Pattern p = Pattern.compile(queryString);
    Matcher m = p.matcher(b);
    while (m.find()) {
    count ++;
    }
    System.out.println(count);
    }
      

  4.   

    public class StringTest { public static void main(String[] args) {
    int num=getNum("xyzxyzxyz","xyz");
    System.out.println(num);
    } //参数分别为需要分析的字符串和需要查找的字符串,返回查找到的个数
    public static int getNum(String source,String find){
    int i=find.length();
    int num=0;
    for(int n=0;n<=source.length()-i;n++){
    if(source.substring(n, n+i).equals(find)){
    num+=1;
    }
    }
    return num;
    }
    }
      

  5.   


    if(String.valueOf(s[i]).equals("x")){ 
       if(String.valueOf(s[i+1]).equals("y")){
          if(String.valueOf(s[i+2]).equals("z")){
          count++; 
          }
       } } 
      
    按LZ的方法,改成三层循环就可以了吧
      

  6.   

    3楼代码补充点    import java.util.regex.*;
        public class CountStr
        {
        public static void main(String[] args) {
            String b="xyzxxyzzyxyzxxyyxyz";
            int count=0;
            String queryString = "xyz";//需要查找的字符串
            Pattern p = Pattern.compile(queryString);
            Matcher m = p.matcher(b);
            while (m.find()) {
                count ++;
            }
            System.out.println(count);
        }
        }
      

  7.   

    请教3L的,关于正则的JAVA类,在哪个包下 ?????????????????
      

  8.   

    使用indexOf也可以做...
    正则不常用,时间长就忘记了...
      

  9.   


    int fromIndex = 0;
    int index = -1;
    int count = 0;
    String str = "xyzxxyzzyxyzxxyyxyz";
    String queryString = "xyz";
    System.out.print(queryString + "出现的位置是:");
    while((index=str.indexOf(queryString, fromIndex)) != -1) {
    fromIndex = index + queryString.length();
    System.out.print(index + " ");
    count ++;
    }
    System.out.println("\n出现的次数为:" + count);这是用indexOf来做的
    楼主可以参考下