如何将数组传递给构造函数java?

时间:2013-11-29 21:59:32

标签: java arrays constructor

如何使用一个参数整数将数组传递给Constructor 我想在a1

中保存数组的所有值

使用此代码时:

//Constructor,,int a1

welcome(int…a)

    {
        for(int b:a)
        {
             a1=b;
        }

    }

OUTPUT显示如下 如果写1& 2作为数组的值 输出将是:

2

2

这意味着打印数组的最后一个值

但是想要这样的输出:

1

2


public static void main(String[] args) 
{
    int size;

    Scanner input=new Scanner(System.in);
    size=input.nextInt();
    int []f= new int[size];

   jk e=new jk();

   e.fill(f);
}

public class jk {

private welcome a;
private int b;

public void fill(int f[])  
{
    Scanner input=new Scanner(System.in);
    for (int i=0;i<f.length;i++)
    {
       b=input.nextInt();
       a=new welcome(b);
    }


    for (int j=0;j<f.length;j++)
    {
       a.print();
    }
}


}

public class welcome {

private  int  a1;

welcome(int...a)
{
    for(int b:a)
    {
         a1=b;

    }

}

public void print()
{
    System.out.println(a1);
}
}

1 个答案:

答案 0 :(得分:4)

这个循环:

for(int b:a)
{
     a1=b;
}

只是重复将b的值分配给a1 - 所以是的,当循环结束时,a1将具有最后一个值的值在a。如果要打印出值,则需要将输出放在循环中:

for (int b : a) {
    System.out.println(b);
}

您尚未显示当前输出的位置 - 但如果您只是重复打印a1,那么它将继续打印相同的值。

编辑:既然我们已经看到了您的代码,您只需要将a1更改为数组:

public class Welcome { // Names changed to be more conventional
    private final int[] values;

    public Welcome(int... values) {
        this.values = values;
    }

    public void printValues() {
        for (int value : values) {
            System.out.println(value);
        }
    }
}

然后在你的fill方法中需要填充数组:

public void fill(int[] f) {
    Scanner input=new Scanner(System.in);
    for (int i = 0; i < f.length; i++) {
       f[i] = input.nextInt();
    }
    a = new Welcome(f);
    a.printValues();
}

以前,您在循环的每次迭代中创建了一个类的实例。您应该仔细查看原始代码 - 最好在调试器中完成它。重要的是要理解为什么原始代码不能像修复它一样有效。