如何在构造函数中传递数组元素?

时间:2019-05-23 08:36:06

标签: java arrays

我有一个作业,其中有一个具有名称的构造函数和一个包含5个主题标记的结果数组。我创建了一个构造函数,并使用for循环传递了NameArray。但是,当我在Student类中创建Main类的对象以在构造函数中传递参数时,会产生语法错误。

如何在构造函数中传递数组元素?

import java.lang.reflect.Array;
import java.util.Scanner;

public class Student {

    private String Name;
    private Array[] obj =new Array[5];
 //   private int Student1, Student2;
   // private int m1=450, m2=333;

    // constructor
    Student(String Name, int Array[]){
        this.Name=Name;
        for(int i=0; i<Array.length; i++ )
        {
            Array[0]=9;
            Array[1]=34;
            Array[2]=88;
            Array[3]=56;
            Array[4]=33;
        }
    }
        // Average method
        public void Average(){
            Scanner input=new Scanner(System.in);
            System.out.println("Enter the marks of Student 1:");
             Student1=input.nextInt();
            System.out.println("Enter the marks of Student 2:");
            Student2=input.nextInt();   
        }}

  public static void main(String[] args) {
        // TODO code application logic here
       Student ss=new Student(Name, Array);
Student ss=new Student(Name, i[87]);
    }

1 个答案:

答案 0 :(得分:2)

您需要将int []数组传递给Student构造函数,而不是在其中构造该数组。

我要换行

private Array[] obj =new Array[5];

private int[] grades = new int[5];

在您的主要方法中,为新的学生对象int[] ssGrades = new int[5];建立成绩,然后像下面在您的学生构造函数中那样分配值,ssGrades[0] = 9等。

在您的学生构造函数中,替换

Student(String Name, int Array[])

Student(String name, int[] grades);

因为要向构造函数发送一个整数数组,而不是一个称为Array []的int。然后将其传递给Student构造函数:

Student ss = new Student(name, ssGrades[]);

然后在您的学生班级中,像您想说的那样this.Name = Name,但是

this.grades = grades;

我认为您需要将Array[]对象和int[] varName对象之间的区别以及分配给对象的属性和对象本身之间的区别分开。 / p>

在我看来,您的问题来自于代码命名变量,这种方式使您难以使用。

此外,当您不使用for循环的索引时,也不需要for循环。所有

for(int i=0; i < Array.length;i++){
  Array[0] = 9;
  etc
}

使用相同值(Array.length)的次数填充数组(因为没有使用索引i,也无法使用它,因为您要输入的等级不相关在我)。 我希望这个答案有帮助。