猪爷爷先生 2017-09-07 04:20 采纳率: 100%
浏览 1776
已采纳

简单登录用户检测,为何会提示空指针异常?

service类

//查询帐号结果做判断逻辑,u对象已存有表单参数
public void findUser(User u){
    //1 根据登陆名称查询登陆用户,dao类udsave方法查询该帐号已经可以返回所有信息
    User existUser = udsave.getByUserName(u.getUserName());
    //2 判断用户是否存在.不存在=>提示用户名不存在
    if(existUser==null){
        System.out.println("用户名不存在!");
    }
    //3 判断用户密码是否正确=>不正确=>提示密码错误
    if(!existUser.getUser_password().equals(u.getUser_password())){
        System.out.println("密码错误!");
    }
}

功能实现都没有问题,输入正确帐号和错误密码会显示密码错误
但是输入错误帐号,existUser为null,控制台会打印“用户名不存在”还有空指针异常??
这个空指针异常是怎么来的呢?。。好奇怪啊
  • 写回答

5条回答 默认 最新

  • 砸死接触 2017-09-07 05:31
    关注

    因为打印了“用户名不存在”之后,程序会继续向下进行,下面的existUser.getUser_password() 这个东西就错了,报空指针了!!!

    楼主要么在楼主的第二步判断用户是否存在的if里加return,要么把第三步的if 改成 else if 或者直接放else里,当然有其他方式!!

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

报告相同问题?

悬赏问题

  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥20 双系统开机引导中windows系统消失问题?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方
  • ¥15 关于生产日期批次退货退款,库存回退的问题
  • ¥15 手机应用的时间可以修改吗
  • ¥15 docker 运行OPEN-webui异常
  • ¥15 麒麟系统如何删除光盘刻录痕迹
  • ¥15 recipe通过gem协议传的是什么
  • ¥15 TS2307: Cannot find module 'cc'.