出错了,JAVA基础题,求改正

[复制链接]
查看11 | 回复1 | 2011-6-29 09:24:28 | 显示全部楼层 |阅读模式
classDemo{
publicstaticvoidmain(String[]args){
jishuan(5);
System.out.println(\"==========================不要看我=====================\");
jishuan2(9);
}
publicstaticvoidjishuan(intx){
inthangshou=1;//定义第行第一个数的值
for(inta=1;a=x;a)
{
hangshou=a-1;
intresult=hangshou;

for(intb=a;x-b10;b){
System.out.print(result\"\\t\");
result=b1;
}
System.out.println();
}
}


publicstaticvoidjishuan2(intx){
StringBuffer[]s1=newStringBuffer[x];
intnum=1;
for(inta=0;ax;a)
{
for(intb=a;b=0;b--,num)
{
                                                        if(s1!=null)
                                                        {
                                                                s1.append(String.valueOf(num));
                                                        }else
                                                                s1.append(String.valueOf(num));
}
}
                                for(inta=0;ax;a)
                                {
                                        System.out.println(s1[a]);
                                }
}
}

为什么我写的第一个方法可以,第二个方法怎么都不行呢。。
回复

使用道具 举报

千问 | 2011-6-29 09:24:28 | 显示全部楼层
是因为你的第二个方法中
if(s1!=null)
{
s1.append(String.valueOf(num));
}else{
s1.append(String.valueOf(num));
}
这个部分你如果s1=null的,else里面就不能对其直接赋值。必须新建一个StringBuffer对象放到s1里面,才可以对其进行赋值操作。改正后的这一部分请参考下面:

if(s1!=null)
{
        s1.append(String.valueOf(num)\"\\t\");
}else{
        s1=newStringBuffer(String.valueOf(num)\"\\t\");
}
这里,我直接在新建的时候就给了个初始值。另外,原来的代码少了跳格\"\\t\",顺便补上了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行