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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄捷 中级黑马   /  2012-6-4 17:33  /  1938 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    按照老毕写了一个类:public class StringTest {
        public static void main(String[] args)
        {

                String4();
        }
        private static void Show(Object obj)
        {
                System.out.println(obj);
        }
       
        private static void String4()
        {
                String arr="dafl,kjla,kdj";
                Show(arr.replace("da","ad"));
                String[] str=arr.split(",");
                for(int a=0;a<arr.length();a++)
                {
                        Show(str[a]);
                }
        }
}

编译能同但是为什么运行时报错数组下标越界呢?adfl,kjla,kdjdafl
kjla
kdj
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at StringTest.String4(StringTest.java:60)
        at StringTest.main(StringTest.java:8)



评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

3 个回复

倒序浏览
你的for循环用来遍历是的String[] str这个数组,但你for的条件写的是小于Sting arr这个字符串的的长度 当然越界了!~
  1. for (int a = 0; a < str.length; a++)
复制代码
这样就行了!

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主那样写出错的问题就是,str数组中只有三个元素,而你遍历的时候循环次数是字符串的长度,当遍历到第四个数组空间时,数组只有三个空间,所以你访问第四个就会出现数组越界的情况。所以要注意数组遍历的次数,一般就循环数组的长度。
所以将循环的次数改为:for(int a =0;a<str.length;a++) 注意:length是数组的属性,不要写成lenggh()了。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
for(int a=0;a<arr.length();a++)
注意区别 length() 和 length  一个是方法 一个是属性
而且你调用的 是arr String的方法长度,你遍历循环的是数组
应该用 for(int a=0;a<str.length;a++)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马