A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 学习代码 中级黑马   /  2014-3-19 00:03  /  1035 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         public static int fangFa_2(String s,String key)
  2.         {
  3.                 int jishuqi = 0;
  4.                 int index = 0;
  5.                 while((index = s.indexOf(key,index))!=-1)
  6.                 {
  7.                         index = index + key.length();//哪位大侠帮忙解释一下 这句话的作用   把执行步骤写一下     谢谢了
  8.                 }
  9.        
  10.         }
  11.         public static void main(String[] args)
  12.         {                String s = "abkkcdkkefkkskk";
  13.                 int d = fangFa_2(s,"kk");
  14.                 System.out.println(d);
  15.         }
  16. }
复制代码

3 个回复

倒序浏览
1.首先,你那个方法中貌似缺少return语句吧,返回的应该是jishuqi
2.indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
3.while((index = s.indexOf(key,index))!=-1) 字符串s从角标index开始如果包含字符串key的话就进入循环,估计你还少了一句jishuji++;
4. index = index + key.length(),举个例子s="abcdabc",key="ab",s中一开始就出现"ab",indexOf返回的值是0,jishuqi的值加1,表明出现一次ab,我们需要继续往后搜索是否存在"ab",所以搜索开始的位置要往后移动"ab"的长度,所以index要加上一个key.length()的长度
5.这个函数的功能是返回字符串s中所含有字符串key的个数

                class Test
                {
                        public static int fangFa_2(String s,String key)
                        {
                int jishuqi = 0;
                int index = 0;
                while((index = s.indexOf(key,index))!=-1)
                {
                        index = index + key.length();//哪位大侠帮忙解释一下 这句话的作用
                                                jishuqi++;
                }
                                return jishuqi;
                        }
                         public static void main(String[] args)
                         {               
                                String s = "abkkcdkkefkkskk";
                int d = fangFa_2(s,"kk");
                System.out.println(d);
                         }
                }

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 枫露 于 2014-3-19 00:37 编辑

你定义的方法有错误,方法定义的是int类型的,你没有定义返回值; 你在main方法里面调用的fangFa_2()方法,key的值为“kk”,key.length()为2,index=index+key.length()等于index=0+2; 你如果想看步骤,在while这一行打一个断点,自己看一下

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
接楼上 把你的错误修正后。
你传入的Key是“kk”
(1)第一个kk是在角标2上,kk的length为2,加上就是4,下一次就从4角标开始,也就是c开始了。
第(2)(3)(4),以此类推都是这样,效率比较快。
建议你多看看几遍视频,自己推推就出来了。不要光看

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马