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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小周务商 金牌黑马   /  2014-2-25 23:47  /  1131 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//定义一个函数,接收一个int类型的数组,计算该数组元素为偶数的总和。class  Test6{
        public static void main(String[] args)
        {
                int[] arr={2,3,5,6,8,12,66};//数组初始化。
                int num = he(arr);//调用下面函数:he
                System.out.println("偶数总和为:"+num);
        }
        public static int he(int[] arr2)//这个数组是调用上面数组的数组吗?
        {
                int num =0;//定义一个变量存储每次偶数相加的和。
                for (int i=0;i<arr2.length ;i++ )
                {
                        if (arr2[i]%2==0)//判断是否为偶数。
                        {
                                num = num+arr2[i];
                        }
                }
                return num;//返回总和。
        }
}
有一点我不太明白的就是public static int he(int[] arr2)

arr2是调用上面arr里面的数据来遍历的吗。如果不是。他哪来的数据执行?
int num = he(arr);
这一行的(arr).也是调用上面的arr的数据吗。
求大神解答一下这个程序的执行流程。就这两个地方不太明白。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 luoanjade 于 2014-2-26 00:07 编辑

小生来给你解答:       上面这个类里面定义了一个int类型的he(int[] arr)静态方法,该方法,返回的值是int类型的,也就是数组中偶数的总和。
       首先,public static int he(int[] arr){},括号里面的arr只是一个形式参数,你可以写任何一个非关键字的标识。
这个方法表示,它将接受并处理任何一个int类型的数组,并返回一个int类型的结果。
       所以,楼主发的程序中: int[] arr={2,3,5,6,8,12,66};//数组初始化。
                                              int num = he(arr);//调用下面函数:he
                 这两行:第一行,定义了一个int类型的数组arr,并已经初始化;
                               第二行,将上面定义的数组,传给he(int[])方法处理。这时候he(int[])方法就有了实参arr
       这会知道,he(arr)的数据从哪来了吧?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
回答问题一:arr2是原来定义的那个数组,只不过不用写成int[]arr2的形式,传入int[]arr就行了.
问题二:     
回复 使用道具 举报
回答问题一:arr2是原来定义的那个数组,只不过不用写成int[]arr2的形式,传入int[]arr就行了.
      问题二: int num = he(arr);也是上面定义的那个数组.  因为方法的参数列表是一个数组,所以把要操作的数组                       传入即可.

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
public static int he(int[] arr){},括号里面的arr只是一个形式参数,你可以写任何一个非关键字的标识。
这个方法表示,它将接受并处理任何一个int类型的数组,并返回一个int类型的结果。

那如果我有两个数组在上面呢。他该接受哪一个数组?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
int num=he(arr); 其中arr就是你传进去的,传那个调用那个啊
回复 使用道具 举报
public static int he(int[] arr2)就是在使用上面的数组,因为数组是引用类型的,当执行int num = he(arr);时,就把上面的数组的引用传递给方法中的arr2,因为它们都是int[]类型的。就相当于给上面的数组起了一个名字arr2,但还是你定义的那个数组。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马