如何使用一个参数整数将数组传递给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);
}
}
答案 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();
}
以前,您在循环的每次迭代中创建了一个类的实例。您应该仔细查看原始代码 - 最好在调试器中完成它。重要的是要理解为什么原始代码不能像修复它一样有效。