繁体   English   中英

将对象插入Java数组

[英]Insert Object into Java Array

我从老师那里得到下一个作业-

我需要建立一个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);

    }

}

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

学生班级代码:

    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个学生(开始时为空)

  • 添加学生时-我需要检查数组中的第一个null值并将其放在那里

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

这段代码

Array[] Android = new Array[100];

正在创建Array类型的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的原因是范围问题。 您已经在Student类的main()方法中将Joe声明为局部变量。 如果希望编译器能够看到它,则需要使用与使用它相同的方法对其进行声明:

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

在Google上快速搜索“ Java变量范围教程”,应该使您充分了解如何以及何时可以使用局部变量和成员变量。

将学生S(1111,“ ahmed”,3.5)插入大小为100且当前大小= 3的学生(id,name,GBG)数组中的位置“ p”的方法。

-remove方法从学生数组大小为100且currentsize = 3的数组中删除GBG = 2.5的学生

首先,更改

Array[] Android = new Array[100]; 

Student[] listOfStudent = new Student[100];

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

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;
    }
}

否则,您将收到“超出范围的列表”错误。 最好不要将代码值硬编码到您的代码中-未来的好习惯!

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM