import java.awt.*;
import java.awt.event.*;public class MyFrame extends Frame implements ActionListener
{
int n=0;
Student studentArray[]=new Student[30];

TextField num=new TextField(8);
TextField name=new TextField(8);
TextField score=new TextField(8);
Button add=new Button("添加");
Button avg=new Button("平均");
Label xuehao=new Label("学号");
Label xingming=new Label("姓名");
Label chengji=new Label("成绩");
Label result=new Label("单击\"平均\"显示所有学生的平均成绩");

public static void main(String[]args)
{
MyFrame mf=new MyFrame();
}

MyFrame()
{
super("学生信息");
setLayout(new FlowLayout());
add(xuehao);
add(num);
add(xingming);
add(name);
add(chengji);
add(score);
add(add);
add(avg);
add(result);
add.addActionListener(this);
add.addActionListener(this);
setSize(400,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==add)
addToArray();
if(e.getSource()==avg)
average();
}
public void addToArray()
{
String s1;
String s2;
float f;
s1=num.getText();
s2=name.getText();
f=Float.valueOf(score.getText()).floatValue();
num.setText("");
name.setText("");
score.setText("");
studentArray[n++].setStudent(s1,s2,f);
}
public void average()
{
float sum=0.0f;
for(int i=0;i<n;i++)
sum=sum+studentArray[i].score;
result.setText(Float.toString(sum/n));
}

}class Student
{
String num;
String name;
float score; Student(String s1,String s2,float f)
{
num=s1;
name=s2;
score=f;
}
public void setStudent(String s1,String s2,float f)
{
num=s1;
name=s2;
score=f;
}
}为什么会报空指针异常?求高手指点!!!