将对象插入Java数组

时间:2014-10-30 20:42:42

标签: java arrays class object constructor

我从老师那里得到了下一个任务 -

我需要构建一个Course类和Student类 并将每个学生插入课程课程 每个学生都有ID,姓名和成绩。

我已经尝试了下一个代码:

 public class Course {

    Student[] android = new Student[100];


    private void addStudent(Student a) {
        for (int i=0;i<android.length;i++) {
            if (android[i] == null) {
                android[i] = a;
                break;
            }
        }

    }

    public static void main(String[] args) {
        addStudent(Joe);

    }

}

我需要将我在Students类中创建的Student插入到数组中的第一个空位置。 当我尝试addStudent(Joe);时,它会给我一个错误:&#34; Joe无法解析为变量&#34;

学生班级代码:

    public class Student {


                private float grade;
                private String name;
                private long id;
           public Student(long c,String b,float a) {
               grade = a;
               name = b;
               id = c;
           }
             public static void main(String[] args) {
             Student Joe = new Student(1,"Joe",40);
}

**该阵列可容纳100名学生(开始时为空)

  • 添加学生时 - 我需要检查数组中的第一个空值并将其放入 有

  • 打印学生时:我只需打印数组中的非空对象**

3 个答案:

答案 0 :(得分:5)

此代码

Array[] Android = new Array[100];

正在创建一个Array类型的数组,因此您只能在其中存储Array个对象。
如果要存储Student,则需要创建一个数组,而不是:

Student[] android = new Student[100];

此外,您需要意识到Java中的数组是从0开始索引的。也就是说,您不能引用与数组大小相同的位置。在你的情况下,你已经做了 一个包含100个元素的数组,但你的for循环试图将101个对象放入其中。

此外,您的问题文本暗示您只想插入新的Student对象一次,但您的循环会将其放入数组中的每个空位置。

请改为尝试:

    for (int i=0;i<android.length;i++) { // < instead of <=, don't hardcode the length
        if (android[i] == null) {
            android[i] = a;
            break;                       // once we insert a, stop looping
        }
    }

更新

编译器无法找到Joe的原因是范围的问题。您已在Joe类的main()方法中将Student声明为本地变量。如果您希望编译器能够看到它,您需要使用它所使用的相同方法声明它:

public static void main(String[] args) {
    Student Joe = new Student(1,"Joe",40);
    addStudent(Joe);
}

快速谷歌搜索&#34; Java变量范围教程&#34;应该给你足够的关于如何以及何时使用本地和成员变量的阅读。

答案 1 :(得分:1)

将学生S(1111,&#34; ahmed&#34;,3.5)的方法插入位置&#34; p&#34;在学生数组(id,name,GBG)数组大小100和curent size = 3。

-remove方法从学生数组中删除GBG = 2.5的学生.array size 100和currentsize = 3

答案 2 :(得分:0)

首先,改变

Array[] Android = new Array[100]; 

Student[] listOfStudent = new Student[100];

这样做会创建一个大小为100的数组,并且数组的类型是Students,这是您将插入到数组中的内容。你也将不得不改变

for (int i=0;i<=100;i++) {
        if (Android[i] == null) {
            Android[i] = a;

        }
}

for(int i=0; i < listOfStudents.length; i++){
    if(listOfStudents[i] == null){
        listOfStudent[i] = a;
    }
}

否则你会得到一个&#34; List Out of Bounds&#34;错误。最好不要在代码中硬编码值 - 这是未来的良好实践!

祝你好运!