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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java题库8
1. 一个没有实现Serializable接口的父类,编写一个能够序列化的子类 ,只要父类实现了序列化的接口,或者,子类实现了序列化的接口就可以序列化 “transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”。 打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安
求字符串的子串个数
长度为n的字符串 1、有n(n+1)/2 +1个子串; 2、非空子串:n(n+1)/2; 3、非空真子串:n(n+1)/2– 1。
hdu 4416 后缀自动机 求一个字符串中出现的不同子串的个数(去除一些其他字符串的子串)
题目大意:给定一个字符串a,又给定一系列b字符串,求字符串a的子串不在b中出现的个数。 第一次写后缀自动机的东西,刚开始的思路就是给a家里一个后缀自动机,对b的系列串也建立后缀自动机,然后对比,对于a自动机中某节点出现k儿子,而b相对应的节点没有k儿子,则说明以k后出现的子串b中都是没有的,咋看思路是挺正确的,但是时间却让人哭了,虽然当时知道肯定TLE的,但是确实想体验一把,不然就是纯粹看别人的
(地主源代码)求解! 做的不够好,求大神指点
(地主源代码)求解! 做的不够好,求大神指点
hiho#1015 : KMP算法(求子串出现的个数)
题库 所有题目我的提交 #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了
后缀数组(三)求给定字符串不相同的子串个数(hdu 4622 区间询问)
如果字符串是给定的,不询问区间,按照论文里写的,由于每个子串一定是某个后缀的前缀,相当于就是求后缀之间不相同前缀的个数。每次新加进来一个后缀,就是加上(n-sa[i]+1)个新前缀,但是其中有height[i]个前面已经算过了,减掉即可。 这题询问的是一个区间[l,r],一开始的思路是,对于每一个sa[i]在l到r之间的后缀,按前面那种方法计算,同时注意考虑一下lcp的右边超过了r的情况,过了样
SPOJ-694-求字符串中不同子串个数(后缀数组)
http://www.spoj.com/status/ns=17418952 【每一个子串必然是某个后缀的前缀】,因此我们统计出所有的后缀中有多少个不同的前缀,就是所有不重复子串的数量了 而这个相同的前缀个数,当然就是所有height之和啦。 所以答案就是n*(n-1)/2-∑height[i] #include #include #include #inclu
求字符串的所有子串(Java/C++)
题目:求一个字符串的所有子串。例如字符串abc的子串有:a,ab,b,bc,c(注意一下子串的特点) 下面我将分别使用Java和C++实现算法来解决这个问题: //C++实现 void getAllSubstrings(string str){ if(str.size()==0) return; else{
求字符串子串数目的方法
最近在做一些算法题,经常遇到字符串的问题,需要计算字符串子串的数目,字符串的子串数目为 n(n+1)/2 + 1,这个答案是如何求得的呢? 我们都知道子串是一个字符串中连续的一段,其实你可以把它抽象为周围有边界的一串字符,如”abcde”,你可以把子串”bc”抽象为”a|bc|de”,这样一来计算子串数目的问题其实就转化成了计算字符串中放置边界的问题,一个长度为n的字符串中可以放置n个边界
spoj 694 求一个字符串中不相同子串的个数
后缀数组