m0_64391767 2022-12-15 21:55 采纳率: 88.9%
浏览 22
已结题

Java空指针异常求解

运行后一使用功能就会有空指针异常
import java.util.Scanner;

public class Test2022 {
    public void show(GISStudent[] student){

    }
    public static void main(String[] args)throws Exception {
        // TODO Auto-generated method stub
        GISStudent[] gisClass2022=new GISStudent[1000];
        gisClass2022[0]=new GISStudent("S001","zhangsan","M",90,88);
        gisClass2022[1]=new GISStudent("S002","lisi","M",80,90);
        gisClass2022[2]=new GISStudent("S003","wangwu","F",95,85);
        Scanner scan=new Scanner(System.in);
        String a;
        do {
            System.out.println("请输入你想要执行的功能");
            a=scan.next();
            if(a.equals("O")){
                for(int i=0;i<gisClass2022.length;i++){
                    for(int j=0;j<9-i;j++)
                    {
                        if(gisClass2022[j].getMath()<gisClass2022[j+1].getMath()) 
                        {
                            GISStudent student=gisClass2022[j];
                            gisClass2022[j]=gisClass2022[j+1];
                            gisClass2022[j+1]=student;
                            System.out.println("排序成功");
                        }
                    }
                }
                
            }
            else if (a.equals("S")) {
                for (int i = 0; i < gisClass2022.length; i++) {
                    System.out.println("学号:"+gisClass2022[i].getId()+" "+"姓名:"+gisClass2022[i].getName()+" "+"性别:"+gisClass2022[i].getSex()+" "+"数学成绩:"+gisClass2022[i].getMath()+" "+"英语成绩:"+gisClass2022[i].getEnglish());
                }
            }
            else if (a.equals("D")) {
                System.out.println("请输入你要删除的学生学号");
                String id;
                id=scan.next();
                for (int i = 0; i < gisClass2022.length; i++) {
                    if (gisClass2022[i].getId().equals(id)) {
                        for (int j = i; j < gisClass2022.length; j++) {
                            gisClass2022[j]=gisClass2022[j+1];
                        }
                        System.out.println("删除成功");
                    }
                    else{
                        System.out.println("未找到该学生");
                    }
                }
            }
            else if(a.equals("I")){
                String id;
                System.out.println("请输入你要插入到哪个学生之前,输入该学生学号");
                id=scan.next();
                for (int i = 0; i < gisClass2022.length; i++) {
                    if (gisClass2022[i].getId().equals(id)) {
                        for (int j=gisClass2022.length; j>i; j--) {
                            gisClass2022[j]=gisClass2022[j-1];
                        }
                        gisClass2022[i]=new GISStudent("S004","zhaosi","M",91,89);
                        System.out.println("插入成功");
                    }
                }    
            }
            else if (a.equals("C")) {
                float english,math;
                float sum=0;
                for (int i = 0; i < gisClass2022.length; i++) {
                    sum=gisClass2022[i].getMath()+sum;
                }
                math=sum/gisClass2022.length;
                for (int i = 0; i < gisClass2022.length; i++) {
                    sum=gisClass2022[i].getEnglish()+sum;
                }
                english=sum/gisClass2022.length;
                System.out.println("数学平均成绩是"+math+"英语平均成绩是"+english);
            }
            else {
                System.out.println("输入错误");
            }
        } while (!a.equals("E"));{
            System.exit(1);
            System.out.println("退出系统");
        }
        
    }

}

img

我不明白是什么情况明明已经创建了对象了,可它还会有异常。
  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-12-15 22:08
    关注
    • 你这里定义的数组长度是 1000,你只初始化了 3个元素
    GISStudent[] gisClass2022=new GISStudent[1000];
    
    • 循环那里 ,你取的 是 i < 数组的长度,作为条件, 即 i < 1000; 显然 下标 在 i = 3 时,gisClass2022[3] 已经是 null了
    for (int i = 0; i < gisClass2022.length; i++) {
                        
    }
    

    如有帮助,欢迎点赞+采纳哈!

    在这里插入图片描述

    本人的开源项目,欢迎star支持下!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程