静态方法 addStudents

Static Method addStudents

提问人:gold teeth 提问时间:11/17/2022 最后编辑:gold teeth 更新时间:11/17/2022 访问量:228

问:

因此,我需要在我的 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”的学生添加到数组中

Java OOP 方法 构造函数 Static

评论

1赞 Stultuske 11/17/2022
你明白关键词“this”是做什么的吗?
1赞 Joachim Sauer 11/17/2022
this.students在方法中没有意义。具体在这里没有意义。只需写.staticthisstudents
0赞 Rogue 11/17/2022
从除 和 之外的每个变量/方法中删除。不要添加为访问工具,它更类似于内存管理工具。staticMAX_STUDENTSmainstatic
1赞 Rogue 11/17/2022
students为 null。做相当于Student[] students;Student[] students = null;
1赞 Rogue 11/17/2022
好吧,如果不做成不是的东西,那么你将无法做,也不会,两者都会导致 NPE (NullPointerException)。studentsnullstudents.somethingstudents[i]

答:

-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