A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐长智 中级黑马   /  2013-1-28 15:11  /  1114 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐长智 于 2013-1-28 15:34 编辑

key+s.length()
     这个语句会造成角标越界。怎么才能让程序无论什么样的字符串都能运行呢?
  1. class Test{
  2.         public static void main(String args[]){
  3.                 String str = "asdfasfsdfsadfsf";
  4.                  String s = "df";
  5.                 getTimes(str,s);
  6.         }
  7.         
  8.         public static void getTimes(String str,String s){
  9.                 int count = 0;
  10.                 int key;
  11.                 while((key = str.indexOf(s))!= -1){
  12.                         count++;
  13.                         str = str.substring((key+s.length()),str.length()-1);

  14.                 }
  15.                 System.out.println(count);
  16.         }
  17.         
  18. }
复制代码

3 个回复

倒序浏览

重新看了遍视频。
粗心大意了,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)
这个方法在角标越界的情况下就自己抛出异常了...
回复 使用道具 举报
count后边加个判断语句,如果if(key+s.length()<str.length-1);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马