我有一个作业,其中有一个具有名称的构造函数和一个包含5个主题标记的结果数组。我创建了一个构造函数,并使用for循环传递了Name
和Array
。但是,当我在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]);
}
答案 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,也无法使用它,因为您要输入的等级不相关在我)。 我希望这个答案有帮助。