if(str.equals(null)) out.println("Sorry!");
===>
if(str == null) ...

解决方案 »

  1.   

    if (str == null) {
        ....
    }
      

  2.   

    关于request.getParameter()
    如果是text,那么没有值的话,默认是空,
    如果是select的话如果没有选择,则是null
    所以要看是取得哪种控件值.
    经典的判断应该是:
    if(str==null || str.length<1){//这样就能判断request有没有取到值了
    ...
    }else{
    ...
    }
      

  3.   

    其实这个是我自己简化学习的一个例子,在我发现问题的程序中有下面的一段:
    在这里,我用的是!=null,但在运行时,也是抛出了空指针异常,那么这个问题产生的原因又是什么?index_stock=request.getParameter("Service");
    if (index_stock!=null&index_stock.equals(ConstantConfig.MSG_STOCK_WANT)) 
    //按代码查询股票行情
     {
          System.out.println("股票行情");
           out.write(000);
           out.flush();
           out.close();
      }
      

  4.   

    问题在这里:
    if (index_stock!=null&index_stock.equals(ConstantConfig.MSG_STOCK_WANT))中的&,如果你用的是&&,那么,就不会出现这样的情况了!
    &表示,你前面的尽管是false,但是程序还会继续判断后面的条件,所以index_stock.equals就出空指针
    &&表示,一旦前面出现false,那么就不会在执行if后面的条件语句了
      

  5.   

    if (index_stock!=null&index_stock.equals(ConstantConfig.MSG_STOCK_WANT)) 
    ====>
    if (index_stock!=null&&index_stock.equals(ConstantConfig.MSG_STOCK_WANT)) 用&&就可以短路了,即第一个条件满足或不满足,第二个条件不去做判断.
    用&就是非做不可的,就...
      

  6.   

    恩,明白~~
    我用上面那个简单的例子试过了,明白了其中的道理。但我将原来程序里的代码改为
    if (index_stock!=null&&index_stock.equals(ConstantConfig.MSG_STOCK_WANT)) 
    好象还回出现空指针,可能是我其它地方还有其它问题,待会再好好检查一下~~