黑马程序员技术交流社区

标题: 获取字符串中子串个数。。不出结果 [打印本页]

作者: 李兆宁    时间: 2012-10-2 14:11
标题: 获取字符串中子串个数。。不出结果
本帖最后由 李兆宁 于 2012-10-2 16:33 编辑
  1. class StrTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str = "abkkdfkkegegsdkkdsagfkk";
  6.                 int i = getSubCount2(str,"kk");
  7.                 sop("i="+i);
  8.         }

  9.         public static int getSubCount2(String str,String key)
  10.         {
  11.                 int count = 0;
  12.                 int index = 0;

  13.                 while ((index=str.indexOf(key,index))!=-1);
  14.                 {
  15.                         sop("index="+index);
  16.                         index = index + key.length();
  17.                         count++;
  18.                 }
  19.                 return count;
  20.         }

  21.         public static void sop(String str)
  22.         {
  23.                 System.out.println(str);
  24.         }
  25. }
复制代码
编译无错,运行正常,就是不出结果。。求教错误之处。。
上网不方便,设置解决可能会晚点。。
作者: 黄小贝    时间: 2012-10-2 14:22
目测 while ((index=str.indexOf(key,index))!=-1);
这一句多了个分号
作者: 古银平    时间: 2012-10-2 14:34
  1. public static int getSubCount(String str,String key)
  2.         {
  3.                 //key 指定要找的字符串
  4.                 int count = 0;   //计数器记录出现的次数
  5.                 int index = 0;   //每次出现指定字符串的索引

  6.                 while((index= str.indexOf(key,index))!=-1) // 循环找不到指定字符串,返回-1时终止循环
  7.                 {
  8.                         sop("index="+index);
  9.                         index = index + key.length();    //index+key.length,下次将会从出现指定字符串之后开始查找

  10.                         count++;
  11.                 }
  12.                 return count;
  13.         }

  14.         public static void main(String[] args)
  15.         {
  16.                 String str = "kkabkkcdkkefkks";

  17.                 System.out.printl("count="+getSubCount_2(str,"kk"));
  18.         }
复制代码
这个行的
作者: 黑马-王燚    时间: 2012-10-2 15:15
第15行  :多了一个分号!  所以不行,程序进入死循环了

我自己也写了个方法,分享下

public static void main(String[] args)
        {
                // TODO 自动生成的方法存根
                 String str = "abkkdfkkegegsdkkdsagfkk";
                 int index=getCount(str, "kk");
                 System.out.println(index);
        }
       
        public static int getCount(String str,String key)
        {
                int count=0;
                while(str.indexOf(key,0)!=-1)
                {
                        count++;
                        str=str.substring(str.indexOf(key,0)+key.length(), str.length());
                }
                return count;
        }
作者: 何小红    时间: 2012-10-2 15:31
做程序时一定要谨慎再谨慎啊{:soso_e127:}
作者: 冯超    时间: 2012-10-2 15:34
不知道为什么 你那代码卡死我了
  我就自己帮你写了个。 关键看你怎么用indexOF这个函数
public class test5 {

        /**
         * @param args
         */
       
        public static void main(String[] args) {
                String str = "kkajkdkklsjfkljskkfkk";
                int i = subString(str, "kk");
                System.out.println(i);
        }
        public static int subString(String str, String key)
        {
                int count = 0;
                int a  = str.indexOf(key, 0);
                while(a != -1)
                {
                        count++;
                        a = str.indexOf(key, a+2);  //每查一个 所言位置自加2个  为什么是2 ?  自家想
                }
                return count;
        }

}
作者: 李兆宁    时间: 2012-10-2 16:32
我了个去,为这个分号,,,感觉程序进入了死循环,怎么就没发现这个分号呢!
唉! 问题解决,谢谢各位。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2