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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Test
{
        public static void main(String[] args)
        {                int[] arr={3,5,7,9};
                  printA(arr);
                System.out.println("Hello World!");
        }
public static int printA(int[] arr){
        int i=0;
                for (i=0;i<arr.length ;i++ ){
                        System.out.print(arr[i]);
                }
                    return arr[i];
        }
}

9 个回复

倒序浏览
  for (i=0;i<arr.length ;i++ ){
                        System.out.print(arr[i]);
                }
这段代码结束时候,i = 4;
而 return arr[i];
即 return arr[4];
所以报错
回复 使用道具 举报
加油 加油 加油  加油
回复 使用道具 举报
水瓶座 来自手机 中级黑马 2015-12-11 23:46:39
板凳
hxh362805079 发表于 2015-12-11 22:13
class Test
{
        public static void main(String[] args)

同意楼上回复!
回复 使用道具 举报
数组从0开始计数
调用.length时总长,从1开始计数
回复 使用道具 举报
你看看你那代码写的!!!           arr【i】;  寄是这个原因!
回复 使用道具 举报
窃贼 中级黑马 2015-12-12 21:45:06
7#
注释掉return语句,返回值改成void就好了
回复 使用道具 举报
LSD-ZWH 中级黑马 2015-12-12 22:33:44
8#
你把长度length-1这样就行了,因为你的数组长度是4,数组的索引是从0开始的,你不减1的话你的索引值i会到4,也就是说你的索引是0,1,2,3,4,这样你的数组长度就是5了,你减1就好了
回复 使用道具 举报
public class Test {
        public static void main(String[] args) {
                int[] arr = { 3, 5, 7, 9 };
                printA(arr);
                System.out.println("Hello World!");
        }

        public static void printA(int[] arr) {
                for (int i = 0;i < arr.length; i++) {
                        System.out.print(arr[i]);
                }
        }
}

你的代码写的不伦不类,打印方法不用定义返回值,功能实现的。而且你返回的是arr[i];但是i在最后i++ 变成了4;所以就越界了
回复 使用道具 举报

我也是这么认为的,感觉就是这样导致了数组越界了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马