在java中将数组作为参数传递

时间:2015-05-28 06:58:49

标签: java arrays arguments

我想将数组作为参数从main传递给子类。但看起来它没有初始化。请看下面的建议我错了。 在此先感谢

    class arraymain{
    public static void main(String[] arg){

        Array obj=new Array();
        obj.passArray(new int[]{1,2,3,4,5},4);
    }
    }
 class Array{
 void passArray(int[] values,int size){

   values=new int[size];
        for (int num=0;num<values.length;num++){
            System.out.println(values[num]);

        }
    }

}
OUPTPUT:
0
0
0
0

3 个答案:

答案 0 :(得分:4)

values=new int[size];

您正在初始化一个新数组,覆盖传递的参数。

以这种方式创建新数组时,所有值都使用其默认值进行初始化,对于int,这恰好为0。

只需删除此行,代码就可以按预期工作。

并且,正如评论指出的那样,这使得参数size未被使用。数组的 length 直接来自数组,正如您在代码中所做的那样。

答案 1 :(得分:2)

您需要从values=new int[size];课程中删除Array

您正在获取values作为参数,然后您正在执行此操作values=new int[size];,这将创建一个新数组,并且此新数组没有值(默认值为0)。

答案 2 :(得分:1)

问题在于

values=new int[size]

您正在创建一个 new 数组,因此您隐藏了一个非0值的数组。