是不是StringBuffers数组没有初始化,我在你的代码上加了初始化就没错了:
 public class What{  
 public static void main(String[] args){  
   StringBuffer[] StringBuffers=new StringBuffer[10];  
     for(int i=0;i<StringBuffers.length;i++)
        StringBuffers[i]=new StringBuffer();    //对每个数组对象初始化;
     for(int i=0;i<StringBuffers.length;i++){  
       StringBuffers[i].append("string buffer at index"+i);  
       }    
   }  
}

解决方案 »

  1.   

    for  (int  i=0;i<StringBuffers.length;i++){ 
    StringBuffers[i]=new  StringBuffer();  
           StringBuffers[i].append("string  buffer  at  index"+i);  
           }
      

  2.   

    看看append的函数声明方式
    StringBuffers append(string str)
    StringBuffers append(int num)
    StringBuffers append(Object obj)
    可见它要连接字符串就只能连接一个字符串
    特别是String类的对象的长度是不能变化的
    而String str="love";
     str=str+"You";虽然长度变了,但是在创建了新对象str才变了(旧对象也是str)
    string变长了实质也是利用StringBuffer类的append方法以+重载实现所以代码应该这样写public  class  WhatHappens{  
     public  static  void  main(String[]  args){  
       StringBuffer[]  StringBuffers=new  StringBuffer[10];  
       for  (int  i=0;i<StringBuffers.length;i++){  
           StringBuffers[i].append("string  buffer  at  index").append(i);  
           }    
       }  
    }
      

  3.   

    因为你的是写在main内部的,不是成员变量的Java是不会自动给你初始化的,只有定义为类成员变量 的,变量才可以不用手动初始化!Java会自动帮你按默认的初始化
      

  4.   

    对于对象数组一定要记得每个都要初始化才能使用,楼上说的也不准确,即使是属于成员的对象数组也要初始化,java并不会帮你初始化的。
      

  5.   

    StringBuffer数组的每个分量没有初始化,所以是一个空指针,用前两面位的方法都可以解决。
      

  6.   

    StringBuffer[]  StringBuffers=new  StringBuffer[10];  
    这条语句只说明并创建了stringbuffer型的引用,对于类类型数组,你还需要逐个进行初始化。如:
    Point points=new Point[10];
    points[1]=new Point();
    points[2]=new Point();
       ..............当然,你也可以直接进行静态初始化:
    StringBuffer stringbuffers[]={"a","b","c","d","e"}