日期:2014-05-18  浏览次数:20591 次

一个格雷码问题,线程错误,求助,急
public class gray{
public static void main(String args[]){
StringBuffer[] buffer = new  StringBuffer[256];
int tem = 0;
graynum(3,buffer,tem);
System.out.print(buffer);
}

static void graynum(int n,StringBuffer []a,int tem){
if(n==0){
a[0].append("0");
a[1].append("1");
tem=1;
}
for(n=(int)Math.pow(2, tem);n>0;n--){
if(n%2!=0)
{
a[n]=a[(n+1)/2].append("0");
}
else
a[n]=a[n/2].append("1");
}
++tem;

}
}
就是这个,线程是错误的,一晚上没改对,求助

------解决方案--------------------
StringBuffer[] buffer = new  StringBuffer[256];
定义了一个数组,但是buffer[i]都是null,不能直接append使用,使用前可以buffer[i] = new StringBuffer()一下,或者每一个都初始化下。