黑马程序员技术交流社区

标题: 获取一个字符串在另一个字符串中出现的次数,求指导 [打印本页]

作者: xxyyyzzzz    时间: 2015-9-13 12:10
标题: 获取一个字符串在另一个字符串中出现的次数,求指导
public class StringTese2 {
        public static void main(String[] args) {
                String s = "abcssdockssfdfdkssfdjfkdsshjfuidfssdsf";
                String str ="ss";
                int x = getStringCount(s,str);
                System.out.println(x);
        }

        public static int getStringCount(String s,String key) {
                int count = 0;
                while(true){
                        if (s.contains(key)) {
                                int x =s.indexOf(key);
                                s = s.substring(x,s.length());
                                count++;
                        }else {
                                break;
                        }
                }
                return count;
        }       
}


作者: xxyyyzzzz    时间: 2015-9-13 12:11
哪里出现错误了?
作者: Anmyre    时间: 2015-9-13 14:07
while(true){
                        if (s.contains(key)) {
                                int x =s.indexOf(key);
                                s = s.substring(x,s.length());
                                count++;
                        }else {
                                break;
                        }
                }
死循环, int x =s.indexOf(key); 获取到0,然后造成s内容一直都是无法修改,变成了死循环,看不到结果
作者: xxyyyzzzz    时间: 2015-9-13 14:27
Anmyre 发表于 2015-9-13 14:07
while(true){
                        if (s.contains(key)) {
                                int x = ...

那该如何改呢?
作者: Anmyre    时间: 2015-9-13 17:55
你的  String s = "abcssdockssfdfdkssfdjfkdsshjfuidfssdsf";  在获取 int x =s.indexOf(key); x永远都是0,那你把字符数splite掉啊 再处理
作者: 霹雳三口组    时间: 2015-9-13 21:45
截取的方式处理一下,应该可以了,见代码;
s = s.substring(x+key.length(),s.length());

public class StringTese2 {

         public static void main(String[] args) {
         String s = "abcssdockssfdfdkssfdjfkdsshajfuidfssdsf";
         String str ="f";
         int x = getStringCount(s,str);
         System.out.println(x);

}

         public static int getStringCount(String s,String key) {
         int count = 0;
         System.out.println(s+"----------------");
         while(s.contains(key)){
                 if (s.contains(key)) {
                 int x =s.indexOf(key);
                 s = s.substring(x+key.length(),s.length());
                 count++;
            }else {
                 break;
            }
        
         }
         return count;
}        

}

作者: xxyyyzzzz    时间: 2015-9-13 22:19
霹雳三口组 发表于 2015-9-13 21:45
截取的方式处理一下,应该可以了,见代码;
s = s.substring(x+key.length(),s.length());

多谢,原来我 s = s.substring(x,s.length());这个代码有问题,加上key.length()就对了。
作者: lijieping    时间: 2015-9-13 22:24
进来看看学习学习




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