日期:2014-05-20  浏览次数:20633 次

小弟改了好几遍可还是调试不成功希望高手指点指点。
  编程输出下图:
    A
   BBB
  CCCCC
 DDDDDDD
  EEEEE
   FFF
    G
我的思路是,先确定中间一列,第四列的元素,再由规律知,当行数小于四时从0行开始,行数每加i则第四列在此行的元素的两侧分别增加i个相同元素,当行数大于四时,每比第七行少i行有与上述相同规律
我的程序
public class shiyan2_2
{public static void main(String[] args)
{int i=0,j=0,k=0;
int f[][];
f=new int[7][7];
f[0][3]='A';
for(i=1;i<7;i++)
f[i][3]='A'+i;
for(i=1;i<4;i++)
{for(k=0;k<i;k++)
f[i][3+i-k]=f[i][3];
f[i][3-(i-k)]=f[i][3];}
for(i=5;i>3;i--)
for(k=0;k<6-i;k++)
{f[i][9-j-k]=f[i][3];
f[i][i+k-3]=f[i][3]; }
for(i=0;i<7;i++)
{for(j=0;j<7;j++)
System.out.println((char)f[i][j]+"");
System.out.println("\n");
} }
}
编译无错但就是调不出来,希望前辈给看看我的思路哪错了,在我原有的基础上应该怎么改进改进就可以了
------解决方案--------------------
看看吧。。希望能满足你的要求!
int i,j = 0,n,o = 0;
boolean isBig = true;
for (i = 1; i <= 7; i++) {
if(!isBig){
for (n = o+1; n > 0; n--) {
if(i==5){
System.out.print("E");
}else if(i==6){
System.out.print("F");
}else if(i==7){
System.out.print("G");
}
}
o-=2;
System.out.print("\n");
}else if(isBig){
for (j = 1; j <= (i*2)-1 ; j++) {
if(i==1){
System.out.print("A");
}else if(i==2){
System.out.print("B");
}else if(i==3){
System.out.print("C");
}else if(i==4){
System.out.print("D");
}
if(i > 3){
isBig = false;
o = i;
}
}
System.out.print("\n");
}
}

------解决方案--------------------

    public static void main(String[] args)
    {

        char c = 'A';
        int n = -1;

        for (int i = 0; i < 7; i++)
        {
            if (i > (7 / 2))
            {
                n -= 2;
            }
            else
            {
                n += 2;
            }
            for (int j = 0; j < n; j++)
            {
                System.err.print((char) c);
            }

            c = (char)(c + 1);