返回

提问 添加收藏

java 出现“Exception in thread "main" java.lang.NullPointerException”

jjoke 发布于 2018年04月25日 (共有4个回帖)

我是java初学者,种植学写一个小程序“学生成绩管理系统”,在51自学网上学习的。现在遇到一个问题如下:

Exception in thread "main" java.lang.NullPointerException
    at Admin.print(Admin.java:8)
    at Admin.create(Admin.java:35)
    at Text.main(Text.java:23)

所有代码如下
请大神门帮忙看一下问题出在哪里????
第一个文件 定义类文件

public class Student {
    private int on;
    private String name;
    private int age;
    private int java;
    private int C_shar;
    private int html;
    private int sql;
    private int sum;
    private int avg;
    public int getOn() {
        return on;
    }
    public void setOn(int on) {
        this.on = on;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getJava() {
        return java;
    }
    public void setJava(int java) {
        this.java = java;
    }
    public int getC_shar() {
        return C_shar;
    }
    public void setC_shar(int c_shar) {
        C_shar = c_shar;
    }
    public int getHtml() {
        return html;
    }
    public void setHtml(int html) {
        this.html = html;
    }
    public int getSql() {
        return sql;
    }
    public void setSql(int sql) {
        this.sql = sql;
    }
    public int getSum() {
        return sum;
    }
    public void setSum() {
        this.sum = this.java+C_shar+this.html+this.sql;
    }
    public int getAvg() {
        return avg;
    }
    public void setAvg() {
        this.avg =this.sum/4;
    }
    public String toString(){
        String msg="\t"+this.on+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"
        +C_shar+"\t"+this.html+"\t"+this.sql+"\t"+this.sum+"\t"+this.avg;    
        return msg;
    }
}
第二个文件 主程序文件
import java.util.*;
public class Text {//主程序
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        //System.out.println("—请定义人数—");
        Student[] stuArr=new Student[4];
        Admin adminStu=new Admin();
        while(true){
            System.out.println("10:添加一个学生");
            System.out.println("11:查找一个学生");
            System.out.println("12:根据编号更新学生的基本信息");
            System.out.println("13:根据编号删除学生");
            System.out.println("14:根据编号输入学生的各门成绩");
            System.out.println("15:根据某一门成绩进行排序");
            System.out.println("16:根据总分进行排序");
            System.out.println("99:退出系统");
            int number=in.nextInt();
            if(number==10){
                System.out.println("请输入学生姓名");
                String name=in.next();
                System.out.println("请输入学生年龄");
                int age=in.nextInt();
                adminStu.create(name,age,stuArr);    //添加学生
            }else if(number==11){
                System.out.println("执行查找学生的基本信息操作");
                System.out.println("请输入学生编号进行查找");
                int on=in.nextInt();
                adminStu.select(on,stuArr);
            }else if(number==12){
                System.out.println("执行更新学生的基本信息操作");
                System.out.println("请输入学生编号");
                int on=in.nextInt();
                System.out.println("请输入学生姓名:");
                String name=in.next();
                System.out.println("请输入学生年龄:");
                int age=in.nextInt();
                adminStu.update(on,name,age,stuArr);
            }else if(number==13){
                System.out.println("执行删除学生操作");
                System.out.println("请输入学生编号");
                int on=in.nextInt();
                adminStu.delate(on,stuArr);

            }else if(number==14){
                System.out.println("执行输入成绩操作");
                System.out.println("请输入学生编号");
                int on=in.nextInt();
                adminStu.input(on,stuArr);            
            }
        }

    }

}
第三个文件:方法文件
import java.util.*;
public class Admin {//用来管理学生的类    
    String msg="\t编号\t姓名\t年龄\tjava\tC#\thtml\tsql\t总分\t平均分";
    public void print(Student[] arr){
        System.out.println(msg);
        for(int i=0;i<arr.length;i++){
            if(arr!=null){
                arr[i].setSum();
                arr[i].setAvg();
                System.out.println(arr[i]);
            }
        }
    }
    public boolean exist(int on,Student stu){//判断学生是否存在
        if(stu!=null){
            if(stu.getOn()==on){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }
    public void create(String name,int age,Student[] arr){
        Student stu=new Student();
        stu.setName(name);
        stu.setAge(age);
        int i=this.setIndex(arr);
        stu.setOn(i);
        if(i==9999){
            System.out.println("学生人数已达到最大");
        }else{
            arr[i]=stu;
        }
        this.print(arr);
    }
    public int setIndex(Student[] arr){//返回为空的下标
        for(int i=0;i<arr.length;i++){
            if(arr[i]==null){
                return i;}
        }
        return 9999;
    }
    public void select(int on,Student[] arr){//查询方法
        System.out.println(msg);
        for (int i=0;i<arr.length;i++){
            if(this.exist(on, arr[i])==true){
                System.out.println(msg);
                System.out.println(arr[i]);
                return;
            }
        }
        System.out.println("没有这个人");
    }
    public void update(int on,String name,int age,Student arr[]){//更新学员信息
//        更新学员信息
        for(int i=0;i<arr.length;i++){
            if(this.exist(on, arr[i])){
                arr[i].setName(name);
                arr[i].setAge(age);
                System.out.println("******更新学生信息成功******");
                this.print(arr);    
                return;
            }
        }
        System.out.println("******更新信息没有成功******");
    }
    public void delate(int on,Student[] arr){
        for(int i=0;i<arr.length;i++){
            if(this.exist(on, arr[i])){
                arr[i]=null;
                this.print(arr);
                return;
            }
        }
        System.out.println("没有这个学生存在");
    }
    public void input(int on,Student[] arr){//输入学生成绩
        for(int i=0;i<arr.length;i++){
            if(this.exist(on, arr[i])==true){
                System.out.println("请输入"+arr[i].getName()+"java成绩:");
                Scanner in=new Scanner(System.in);
                arr[i].setJava(in.nextInt());
                System.out.println("请输入"+arr[i].getName()+"C#成绩:");
                arr[i].setC_shar(in.nextInt());
                System.out.println("请输入"+arr[i].getName()+"html成绩:");
                arr[i].setHtml(in.nextInt());
                System.out.println("请输入"+arr[i].getName()+"SQL成绩:");
                arr[i].setSql(in.nextInt());
                this.print(arr);
                break;

            }
        }
    }
    

}

MyEclipse
文明上网,理性发言
客户端 Android iPhone WP7