package come;public class fff {
public static boolean isNumeric(String str){

  if (str.equals("") || str==null) {
return false;
}
  else {
  for (int i = str.length() ; --i>=0 ; ){   
    if (!Character.isDigit(str.charAt ( i ) ) ){
     return false;
    }
   }
  return true;
}        
}
}package come;public class heheh extends fff{
public static void main(String[] args) {
// TODO 自动生成方法存根

String haha=null;

System.out.println(isNumeric(haha));


}}判断数字 运行 heheh类 报错 
Exception in thread "main" java.lang.NullPointerException
at come.fff.isNumeric(fff.java:8)
at come.heheh.main(heheh.java:16)
我已经在方法里判断null值了 为什么还报错啊?

解决方案 »

  1.   

    if条件也是有顺序的。这里你应该把判断Null值的放在前面就Ok了
    if (str == null ||str.equals("")) 
      

  2.   

    因为你的String haha=null;
    所以,在进入isNumeric方法后,会进行一个判断,
    先判断了str.equals("")这里str是你传进来的null,当然会报错啦。
    这样改if (str==null || str.equals("")) {
                return false;
            }这时候如果判断出str==null为true,则str.equals("")不会被执行。
      

  3.   

    if(null == str || "".equals(str)){
       ...
    }
      

  4.   

    ||   如果前面的条件为false,则不会执行||后面的判断。
    你的代码可以改成这样:if (str==null || str.equals(""))