黑马程序员技术交流社区
标题:
字符串练习的小问题。
[打印本页]
作者:
唐长智
时间:
2013-1-28 15:11
标题:
字符串练习的小问题。
本帖最后由 唐长智 于 2013-1-28 15:34 编辑
key+s.length()
这个语句会造成角标越界。怎么才能让程序无论什么样的字符串都能运行呢?
class Test{
public static void main(String args[]){
String str = "asdfasfsdfsadfsf";
String s = "df";
getTimes(str,s);
}
public static void getTimes(String str,String s){
int count = 0;
int key;
while((key = str.indexOf(s))!= -1){
count++;
str = str.substring((key+s.length()),str.length()-1);
}
System.out.println(count);
}
}
复制代码
作者:
唐长智
时间:
2013-1-28 15:34
重新看了遍视频。
粗心大意了,str = str.substring((key+s.length()),str.length()-1);的str.length不能减1的...
str = str.substring((key+s.length()),str.length()-1);
原来把这句改成
str = str.substring(key+s.length());
就行了。
查了java的API文档,原来substring(int beginIndex)
这个方法在角标越界的情况下就自己抛出异常了...
作者:
朱玉玺
时间:
2013-1-28 17:00
count后边加个判断语句,如果if(key+s.length()<str.length-1);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2