public class Test1{
public static void main(String []args){
int l =0, u = 0, o = 0;
String s = "aB aK sL7d6hG";
StringBuffer sb1 = null;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c >= 'a' && c <= 'z'){
sb1.append(c);
l++;
}else if(c >= 'A' && c <= 'Z'){
u++;
}else {
o++;
}
System.out.print(sb1);
} System.out.println("    "+l+"       "+u+"         "+o);
}

}我想计算下s里面的小写字母数并输出小写字母组成的字符串
但是这样写运行的时候会报一个 java.lang.NullPointerException
这个空指针错是哪个引起的?sb1?  应该怎么办呢?

解决方案 »

  1.   

    你自己都已经把答案说出来啦。你的StringBuffer为NULL,所以调用这个变量的方法肯定会报出NullPointerException异常啦
      

  2.   

    定义StringBuffer的时候赋值给它,比如StringBuffer b1 = new StringBuffer("");
      

  3.   

    public class Test1{
    public static void main(String []args){
    int l =0, u = 0, o = 0;
    String s = "aB aK sL7d6hG";
    StringBuffer sb1 = new StringBuffer("");
    StringBuffer sb2 = new StringBuffer("");
    StringBuffer sb3 = new StringBuffer("");
    for(int i=0; i<s.length(); i++){
    char c = s.charAt(i);
    if(c >= 'a' && c <= 'z'){
    sb1.append(c);
    l++;
    }else if(c >= 'A' && c <= 'Z'){
    sb2.append(c);
    u++;
    }else {
    sb3.append(c);
    o++;
    }

    }
    System.out.println(sb1);
    System.out.println(sb2);
    System.out.println(sb3);
    System.out.println("小写字母数有:"+l+"个;"+"\n"+"大写字母字母数有:"
    +u+"个;"+"\n"+"非字母数有:"+o+"个!");
    }

    }