Amb*_*dor -1 java arrays constructor class object
我从老师那里得到了下一个任务 -
我需要构建一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将我在Students类中创建的Student插入到数组中的第一个null位置.当我尝试addStudent(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);
}
Run Code Online (Sandbox Code Playgroud)
**该阵列拥有100名学生(开始时为null)
添加学生时 - 我需要检查数组中的第一个空值并将其放在那里
打印学生时:我只需打印数组中的非空对象**
这段代码
Array[] Android = new Array[100];
Run Code Online (Sandbox Code Playgroud)
正在创建一个类型数组Array,因此您只能Array在其中存储对象.
如果要存储Students,则需要创建一个数组,而不是:
Student[] android = new Student[100];
Run Code Online (Sandbox Code Playgroud)
此外,您需要意识到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
}
}
Run Code Online (Sandbox Code Playgroud)
编译器无法找到的原因Joe是范围问题.您已在类的方法中声明Joe为局部变量.如果希望编译器能够看到它,则需要使用与使用它相同的方法声明它:main()Student
public static void main(String[] args) {
Student Joe = new Student(1,"Joe",40);
addStudent(Joe);
}
Run Code Online (Sandbox Code Playgroud)
快速谷歌搜索"Java变量范围教程"应该为您提供有关如何以及何时可以使用本地和成员变量的大量阅读.