黑马程序员技术交流社区

标题: Mayday!Mayday! [打印本页]

作者: 978677855    时间: 2016-3-9 18:05
标题: Mayday!Mayday!

求助:为什么获取大字符串中指定索引位置后的小字符出现的索引,并将其赋值给i,这么写之后,最后没有输出结果。debug测试的时候发现“i”的值一直未变,不知道什么原因,求指教,谢谢!

作者: 孟茹    时间: 2016-3-10 17:31
public class a1{
      public static void main(String[] args) {
                String s = "woaijavazhenaijavaldfjjavajfjdjfkdjavalkj";
                int i=0;
                int count = 0;
                while(( i = s.indexOf("java")) != -1){
                        s = s.substring(i+"java".length());
                        count++;
               
                }
                System.out.println(count);
        }
}

作者: 孟茹    时间: 2016-3-10 17:39
你的之所以不对是因为:你第一次的i=4,而进入循环以后一直找的是从索引为4到结尾的字符串中第一个java的位置,也就是你的一直是0
作者: liu1097974712    时间: 2016-3-10 18:23
一直重复在做一个动作
作者: 978677855    时间: 2016-3-11 11:11
孟茹 发表于 2016-3-10 17:39
你的之所以不对是因为:你第一次的i=4,而进入循环以后一直找的是从索引为4到结尾的字符串中第一个java的位 ...

太感谢了,弄明白了!我陷入了死循环,一直在获取第一个小串的索引,i 输出的一直是4,还是第一个小串的索引。不是0,不过还是谢谢了!
作者: 978677855    时间: 2016-3-11 11:17
【这是我解决上次出现的问题后写的代码,正常运行。老师视频讲的是获取小字符串之后对大字符串进行截取,下面这个是用不截取的方法做的。给大家分享下,请多指教。】

package com.heima.news;
//统计大串中小串出现的次数
public class L04 {
        public static void main(String[] args) {
                String s="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
                int count =0;
                String s1="java";
                int i = s.indexOf(s1);        //获得小字符串"java"在大字符串中的索引
         while(i!=-1){
                count++;
                i=i+s1.length();
                i = s.indexOf(s1, i);  //获取大字符串中指定索引位置后的小字符出现的索引,并将其赋值给i
        }
                System.out.println(count);       
                }

}




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