请教一下各位,最近碰到一个问题,我在jsp中用equals()方法判断字符串是否相等总是出错,请大家帮忙看一下。
代码:
<%
  request.setCharacterEncoding("gb2312");
  String b=request.getParameter("hiddenField");
  if(b.equals("sub")){
   String s=request.getParameter("select");
   String sql="";
   if(s.equals("身份证")) {
   sql="select * from UserInf where Identification='"+request.getParameter("num")+"'";
   }
   else sql="select * from UserInf where CardNum='"+request.getParameter("num")+"'";
   try{
   User u=User.getUser(sql);
   session.setAttribute("user",u);
   }
   catch(UserNotFoundException e){
                   e.printStackTrace();
   }
  }
  
   %>
color=#FF0000]错误:[[/color]
exception org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/CardLost.jsp at line 5552:   <%
53:   request.setCharacterEncoding("gb2312");
54:   String b=request.getParameter("hiddenField");
55:   if(b.equals("sub")){
56:    String s=request.getParameter("select");
57:    String sql="";
58:    if(s.equals("身份证")) {
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException

解决方案 »

  1.   

    b.equals("sub")改"sub".equals(b)
    s.equals("身份证")改"身份证".equals(s)
      

  2.   

    String b=request.getParameter("hiddenField");
    b为null吧?
      

  3.   

    这样能够防止出现空指针异常。因为b 和 s 有可能为null,而 "sub" 和"身份证" 永远不为null.
      

  4.   


    因为有可能你的b,s变量是null,这样null调用equals方法就会出错,而("sub")和("身份证")都永远不为空,就不会出错误,如果你非要反过来,就得加上判断,判断是否为null,主要是因为它是null,在内存中没有开辟空间,既然连空间都没有,你说它还能干什么?我没办营业执照,还卖黄色光盘,你说我会不会触犯法律?一样的道理
      

  5.   

    要不换过来也可以,把if(s.equals("身份证"))这句改成if(!"".equals(s)&&s!=null&&s.equals("身份证"))也可以,原理一样,防止空指针
      

  6.   

    b.equals("sub")改"sub".equals(b)
    s.equals("身份证")改"身份证".equals(s)调用equals方法是一般用常量放在前面,变量放在后,反之容易出现空指针异常
      

  7.   

    调用equals方法是一般用常量放在前面,变量放在后,反之容易出现空指针异常 
     养成好习惯,这点比较重要~!
      

  8.   

    支持一楼
    要是判断空的话b!=null要作为第一个条件
      

  9.   

    很明显,空指针异常
    在编程中多考虑空指针的问题
    尽量避免出现类似错误
    b!= null && "sss".equals(b)
      

  10.   

    学习了 我说怎么用"".equals()怎么老出错  看来以后写的时候得改过来了