猪爷爷先生 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 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思