java队列在线求解

1、利用队列实现一个学生排队买票功能
1、定义一个学生类Student,包括学号No、姓名Name、性别Gender、年龄Age等信息
2、定义一个队列类Queue,用于将学生进行队列排序
3、可以从队列中删除学生
4、可以向队列中新增一名学生
5、注意:
(1)队列是一种数据结构,采取先进先出原则,先进入队列的数据先出队列
(2)可以定义一个对象数组,当数组元素未满,则新的同学可以进入;
(3)元素的删除只能从第一个元素删除(即队列头位置);元素的加入,只能从队尾加入
(4)要注意如果队列已满,则新的元素暂时不能加入;队列已空,则不能删除元素
我的代码:
package text14;

/1、利用队列实现一个学生排队买票功能
1、定义一个学生类Student,包括学号No、姓名Name、性别Gender、年龄Age等信息
2、定义一个队列类Queue,用于将学生进行队列排序
3、可以从队列中删除学生
4、可以向队列中新增一名学生
5、注意:
(1)队列是一种数据结构,采取先进先出原则,先进入队列的数据先出队列
(2)可以定义一个对象数组,当数组元素未满,则新的同学可以进入;
(3)元素的删除只能从第一个元素删除(即队列头位置);元素的加入,只能从队尾加入
(4)要注意如果队列已满,则新的元素暂时不能加入;队列已空,则不能删除元素
/

package text14;

/*1、利用队列实现一个学生排队买票功能
1、定义一个学生类Student,包括学号No、姓名Name、性别Gender、年龄Age等信息
2、定义一个队列类Queue,用于将学生进行队列排序
3、可以从队列中删除学生
4、可以向队列中新增一名学生
5、注意:
(1)队列是一种数据结构,采取先进先出原则,先进入队列的数据先出队列
(2)可以定义一个对象数组,当数组元素未满,则新的同学可以进入;
(3)元素的删除只能从第一个元素删除(即队列头位置);元素的加入,只能从队尾加入
(4)要注意如果队列已满,则新的元素暂时不能加入;队列已空,则不能删除元素*/
public class test {
    public static void main(String[] args) {
        Queue queue = new Queue();
        queue.Queue(6);
        queue.addQueue("210", "T", "man", "13");
        //queue.addQueue("220", "Q", "woman","13");
        //queue.addQueue("230", "W", "man", "13");
        //queue.addQueue("240", "E", "man", "13");
        System.out.println(queue.deleteQueue());
    }

}
class Student {
    public String No;
    public String Name;
    public String Gender;
    public String Age ;
    
    public void Set(String No, String Name, String Gender, String Age ) {
        this.No = No;    
        this.Name = Name;    
        this.Gender = Gender;
        this.Age = Age;
    }
    
}
class Queue extends Student{
    private int maxSize;
    private int front;
    private int real;
    Student[] student ;
    public void Queue(int maxSize) {
        this.maxSize = maxSize;
        this.front = 0;
        this.real = 0;
         student = new Student[maxSize];
    }
    //判断队列是否满
    public boolean isFull() {
        return real == maxSize - 1;
    }
    //空
    public boolean isEmpty() {
        return real == front;
    }
    //添加元素
    public void addQueue(String No, String Name, String Gender, String Age) {
        if(isFull()) {
            throw new RuntimeException("队列已满,禁止入队!");
        }else {
            student[real].Age = Age; 
            
            student[real].Gender=Gender;
            student[real].Name=Name;
            student[real].No=No;
            real++;
        }
    }
    public Student deleteQueue() {
        if(isEmpty()) {
            throw new RuntimeException("队列为空,禁止出队!");
        }else {
            return student[front++];
        }
    } 
}



但是编译失败
Exception in thread "main" java.lang.NullPointerException: Cannot assign field "Age" because "this.student[this.real]" is null
at text14.Queue.addQueue(test.java:63)
at text14.test.main(test.java:17)
为什么,在线求解

你虽然初始化了student[] 这个数组,但是你没有往这个数组里放入student,所以这个时候数组的这个位置还是null,直接调用它的 age属性就报了空指针了。
你的addQueue可以改成直接添加Student对象的,或者还是这样添加,但是每次添加的时候new一个Student对象:例如这样

public void addQueue(String No, String Name, String Gender, String Age) {
        if(isFull()) {
            throw new RuntimeException("队列已满,禁止入队!");
        }else {
            Student newStu = new Student();
            newStu.Age = Age;
            newStu.Gender=Gender;
            newStu.Name=Name;
            newStu.No=No;
            student[real] = newStu;
            real++;
        }
    }