黑马程序员技术交流社区

标题: 这个程序该怎么改 [打印本页]

作者: KID灬熊孩子    时间: 2014-8-5 19:52
标题: 这个程序该怎么改
package cn.myjava;
//打印出程序中出现的“nba”的个数
public class Demo4 {
        public static void main(String[] args) {
                String s = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
                String[] sarr = s.split("nba");
               
                System.out.println(sarr.length-1);
        }
}

这个nba在字符串尾端的话程序就不合理,,,该怎么改啊
作者: 燿陚√揚葳    时间: 2014-8-5 21:14
这个视屏中有讲过的啊,最好用个计数器来记录他出现的个数,这样用的话只能是开头结尾没有出现这个字符串
作者: 王广丛    时间: 2014-8-5 21:49
//不适用的情况1,"kkkkkk".split("kk") 获取的数组长度为0;
//不适用的情况2,"abcdekkfgkk".split("kk")
//为了使其同样也适应于情况1和情况2,可以在需要切割的字符串后增加一个空格(或其他特定字符)即"kkkkkk ".split("kk");"abcdekkfgkk ".split("kk")。但是规则字符串不能以空格(其他特定字符)结尾
  1.         public static int countString(String src,String s){
  2.         /*        //String sss = "dfegkk";
  3.                
  4.                 单纯的用切割,有些时候会少计算:例如:"s=dfegkk",查找kk的次数
  5.                 String arr[] = s.split("kk");得到的数组长度为1,而不是2。因此长度减去1,便成0了,所以会少计算
  6.                 即:当所要查找的字符串在源字符串最后时,会少计算一次       
  7.                 因此,使用时要判断,src字符串最后是否包含s       
  8.                 注意:split("kk");是在kk之后进行切割
  9.                  
  10.                 if(src.length()<s.length()){
  11.                         return 0;
  12.                 }
  13.                 String[] arr = src.split(s);               
  14.                 if(src.endsWith(s)){//如果是以所要查询的字符串结尾,则直接返回切割后数组长度
  15.                         return arr.length;
  16.                 }
  17.                 return arr.length-1;*/
  18.                
  19.                 if(src.length()<s.length()){
  20.                         return 0;
  21.                 }
  22.                 String temp = src+" ";
  23.                 return temp.split(s).length-1;
  24.         }
复制代码

作者: 钟伟    时间: 2014-8-5 21:50
来看看:Q
作者: 王凯路路    时间: 2014-8-5 22:29
路过.....我以前也试过一种截取方式,  就是里面什么都不放  不知道和你的一样不 :)
作者: 郭旭辉    时间: 2014-8-5 22:45
..........................
作者: icris    时间: 2014-8-5 22:47
split 之前:s = "0" + s + "0";
作者: 唐覃利    时间: 2014-8-5 22:59
。。。。。。。。。。。。。。。
作者: fantacyleo    时间: 2014-8-5 23:17
老老实实一步步来,不要想着一步到位
  1. public static void main(String[] args) {
  2.                  String s = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
  3.                  int count = 0, i = -1;
  4.                  while ((i = s.indexOf("nba")) != -1) {
  5.                          count++;
  6.                          s = s.substring(i + "nba".length());
  7.                  }
  8.                  System.out.println(count);
  9.      }
复制代码





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