黑马程序员技术交流社区
标题:
这个程序该怎么改
[打印本页]
作者:
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")。但是规则字符串不能以空格(其他特定字符)结尾
public static int countString(String src,String s){
/* //String sss = "dfegkk";
单纯的用切割,有些时候会少计算:例如:"s=dfegkk",查找kk的次数
String arr[] = s.split("kk");得到的数组长度为1,而不是2。因此长度减去1,便成0了,所以会少计算
即:当所要查找的字符串在源字符串最后时,会少计算一次
因此,使用时要判断,src字符串最后是否包含s
注意:split("kk");是在kk之后进行切割
if(src.length()<s.length()){
return 0;
}
String[] arr = src.split(s);
if(src.endsWith(s)){//如果是以所要查询的字符串结尾,则直接返回切割后数组长度
return arr.length;
}
return arr.length-1;*/
if(src.length()<s.length()){
return 0;
}
String temp = src+" ";
return temp.split(s).length-1;
}
复制代码
作者:
钟伟
时间:
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
老老实实一步步来,不要想着一步到位
public static void main(String[] args) {
String s = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
int count = 0, i = -1;
while ((i = s.indexOf("nba")) != -1) {
count++;
s = s.substring(i + "nba".length());
}
System.out.println(count);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2