提问人:gold teeth 提问时间:11/17/2022 最后编辑:gold teeth 更新时间:11/17/2022 访问量:228
静态方法 addStudents
Static Method addStudents
问:
因此,我需要在我的 COP 类 OOP 编程中帮助 JAVA 的这一部分。 首先是我需要将addStudent更改为静态方法,但代码不会运行,因为this.student不是静态的,这没有意义,因为它已经私有静态了
import java.util.Arrays;
public class InitializerDemo {
public static final int MAX_STUDENTS = 10;
private static Student[] students;
private Instructor instructor;
private static int numStudents = 0;
// default constructor
public InitializerDemo() {
}
// instructor mutator
public void setInstructor(Instructor instructor) {
this.instructor = instructor;
}
// add a student, increment the count
//This PART!!! HELP
public static void addStudent(Student s) {
this.students[numStudents++] = s;
}
public static void main(String[] args) {
// create our aggregator object
InitializerDemo id = new InitializerDemo();
// set the instructor
id.setInstructor(new Instructor("Sally"));
// add the students
id.addStudent(new Student("Sam"));
id.addStudent(new Student("Rajiv"));
id.addStudent(new Student("Jennifer"));
id.addStudent(new Student("Test Student"));
// output
System.out.println(id);
}
public String toString() {
String s = "Instructor = " + instructor + "\n" +
"Number of students = " + numStudents + "\n" +
"Students: " + Arrays.toString(students) + "\n";
return s;
}
}
class Student {
private String name;
// instance initializer block
{
name = "noname";
}
public Student() {
}
public Student(String name) {
this.name = name;
}
public String toString() { return name; }
}
class Instructor {
private String name;
// instance initializer block
{
name = "noname";
}
public Instructor() {
}
public Instructor(String name) {
this.name = name;
}
public String toString() { return name; }
}
我需要有关addStudent方法的帮助 这些是说明,很抱歉让你们所有人感到困惑,感谢您抽出时间帮助我
将表示学生数的实例变量和聚合器对象中的 Student 数组更改为私有静态变量。
• 将聚合器对象中的 addStudent 方法从实例方法更改为静态方法
• 从聚合器对象的默认构造函数中删除所有初始化/实例化操作;构造函数可以简单地是一个空方法 { }
• 在聚合器对象中提供一个静态初始值设定项块,该块执行以下操作:
o 将学生数初始化为 0
o 实例化学生数组
o 使用 addStudent 方法将一个名为“Test Student”的学生添加到数组中
答:
-1赞
Levente Györgydeák
11/17/2022
#1
更改为 .
我认为这应该行得通。this.students[numStudents++] = s;
students[numStudents++] = s;
您还必须初始化学生,因此请更改
private static Student[] students;
自
private static Student[] students = new Student[MAX_STUDENTS];
评论
0赞
gold teeth
11/17/2022
我尝试它在 InitializerDemo.main(InitializerDemo.java:39) 的 InitializerDemo.addStudent(InitializerDemo.java:28) 的线程“main”java.lang.NullPointerException 中给出了此异常
0赞
Stultuske
11/17/2022
你从来没有初始化过学生,你认为还会发生什么?
0赞
gold teeth
11/17/2022
教师 = Sally 学生人数 = 4 名学生:[Test Student, Sam, Rajiv, Jennifer, noname, noname, noname, noname, noname, noname] 这是预期的输出,但为什么不打印?但我需要学生
0赞
gold teeth
11/17/2022
谢谢,但是对于构造函数部分,如果我删除默认构造函数,它会打印所有带有 null、null、null、null 的名称,但我想要除 null 之外的 noname
评论
this.students
在方法中没有意义。具体在这里没有意义。只需写.static
this
students
static
MAX_STUDENTS
main
static
students
为 null。做相当于Student[] students;
Student[] students = null;
students
null
students.something
students[i]