2 uniqueweimeijun uniqueweimeijun 于 2016.02.02 11:41 提问

java字符串中求字串的个数。求大神指点。谢谢

package z_1;

public class Z_4 {
/*
* 计算某个字符串在另一个字符串中出现的次数
*/

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s="kkaaskkadidkkddspqlkk";
    getCount(s,"kk");
    sop(getCount(s,"kk"));
}
private static int getCount(String s, String string) {
    // TODO Auto-generated method stub
    int count=0;
    int index=0;
    while((index=s.indexOf(string))!=-1)
    {
        sop("s="+s);
        s=s.substring(index+string.length());
        count++;

    }
    return count;
}
private static void sop(String str) {
    // TODO Auto-generated method stub
    System.out.println(str);
}

}

4个回答

Zhipeng_Hou
Zhipeng_Hou   2016.02.02 13:43
已采纳

LZ写的是对的,问题出在你的代码的sop(getCount(s,"kk"));这一句,getCount(String s, String string)返回的是一个int型的数据,这个时候由于sop(String str)使用的是String 类型的参数,这种情况下是不能进行自动装箱并调用toString()方法的,说白了,就是不能从int 自动装箱为Integer类型的对象,并自动调用其toString()方法返回包含其值得String对象的。
你可以试一下把sop(getCount(s,"kk"));改成sop(getCount(s,"kk")+"");就对了。由于加了""这个空字符串,因此会自动将int与后面的String,合并转化为新的String进行传递打印。

uniqueweimeijun
uniqueweimeijun 灰常感谢
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.02.02 11:48

这行代码有问题:

 s=s.substring(index+string.length());     // 开始的位置计算不对
wbx10
wbx10 回复uniquewdl: count个数时int型,而sop函数使用的是String型参数。所以类型错误
接近 2 年之前 回复
wbx10
wbx10 回复uniquewdl: count个数时int型,而sop函数使用的是String型参数。所以类型错误
接近 2 年之前 回复
uniqueweimeijun
uniqueweimeijun 刚开始就是从0开始计算呀 为什么打印时输出count个数时显示类型错误。sop函数没有问题吧
接近 2 年之前 回复
qq1009475063
qq1009475063   2016.02.02 14:08

会不会是因为 index 是 int 类型 的原因

zrds2e
zrds2e   2016.02.02 15:07

sop(getCount(s,"kk"));这一句还是有问题的


Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!