黑马程序员技术交流社区
标题:
【已解决】一个String的一个练习疑惑。
[打印本页]
作者:
逝去的记忆ヽ
时间:
2012-6-14 11:29
标题:
【已解决】一个String的一个练习疑惑。
本帖最后由 逝去的记忆ヽ 于 2012-6-14 13:07 编辑
//练习:需求 将字符串中出现的一段字符串出现的次数统计出来。"anjjadkjjsjjwjjaddjj"
//思路:定义一个计数器。
// 查找出现jj第一次出现的位置 然后进行计数一次。
// 当查找范围超出字符串长度时,程序结束。
那么我的问题就是如果在字符串改成带有三个连续的jjj的时候,就是“anjjjadkjjsjjwjjaddjj”,
输出结果还是5,可是按照我们的常理来推算的话,这里面应该有6个jj才对啊。求哪个大侠给点解释
如果能给修正代码更好。谢谢
class StringTest1
{
public static void main(String[] args)
{
String s = "anjjadkjjsjjwjjaddjj";//
sop(getSubString(s,"jj"));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static int getSubString(String s, String key)
{
int count= 0;
int index= 0;
while((index=s.indexOf(key))!=-1)
{
s=s.substring(index+key.length());
count++;
}
return count;
}
}
作者:
李盼
时间:
2012-6-14 11:34
因为你是查找JJ,那么第一个是JJJ,他先查看前面第一个是J,然后再查看第二个也是J,那么就满足,计数加1,然后会直接跳过第2个J,从第3个查,发现第3个J后查第3个J的后面,发现是a,不满足JJ,所以就不计算!
作者:
符云爵
时间:
2012-6-14 11:36
为什么一定要用jj。。。
作者:
孙峰
时间:
2012-6-14 11:39
楼主我想你不太理解题,或者有点钻牛角尖了,“anjjjadkjjsjjwjjaddjj”,里我认为就是只有 5 个“jj”
作者:
姚玉鹏
时间:
2012-6-14 11:44
{
public static void main(String[] args)
{
String s = "anjjadkjjsjjwjjaddjj";//
sop(getSubString(s,"jj"));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static int getSubString(String s, String key)
{
int count= 0;
int index= 0;
while((index=s.indexOf(key))!=-1)
{
s=s.substring(index+key.length()-1);
count++;
}
return count;
}
}
这样就是6了 因为你的index加了key.length() 所以就是5
作者:
Kristy_Li
时间:
2012-6-14 11:49
附上程序代码:
public class StringTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "anjjjadkjjsjjwjjaddjj";//
sop(getSubString(s,"jj"));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static int getSubString(String s, String key)
{
int count= 0;
int index= 0;
while((index=s.indexOf(key))!=-1)
{
s=s.substring(index+1);//只需把这里每次的增量改为+1即可
count++;
}
return count;
}
}
作者:
邓杰
时间:
2012-6-14 11:57
class StringTest1
{
public static void main(String[] args)
{
String s = "anjjjadkjjsjjwjjaddjj";//
sop(getSubString(s,"jj"));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static int getSubString(String s, String key)
{
int count= 0;
int index= 0;
while((index=s.indexOf(key))!=-1)
{
s=s.substring(index+key.length());//第一次运行是index=2;即这个位置(红色)"an
j
jjadkjjsjjwjjaddjj"加上“jj”的长度index=4;"anjj
j
adkjjsjjwjjaddjj"
//第二次运行时index=4;4以后第一次出现“jj”的地方是"anjjjadk
jj
sjjwjjaddjj"而不是"anj
jj
adk
jj
sjjwjjaddjj"
//一句话。一般情况JAVA中取角标都是含头不含尾;按我的常理本就应该是5次。怎么会是6次呢;
count++;
}
return count;
}
}
作者:
吴小东
时间:
2012-6-14 13:18
楼上的你想多了 {:soso_e143:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2