我想输出
              *
             ***
            *****
           *******
          *********
           *******
            *****
             ***
              *
程序是这样的,就是不能输出结果
//Xing1.java
public class Xing1{
 public static void main(String args[]){
  char a[]=new char[];
  int i,j,k,p,q,m,n;
  i=10;j=10;
  for(m=1;m<20;m++)
     Stringa[m++]=' ';
     Stringa[10]='*';
  for(m=1;m<=5;m++)
     {Stringa[i--]=Stringa[10];Stringa[j++]=Stringa[10];
      for(k=0;k<=18;k++)
      System.out.print(+Stringa[k]);
      System.out.println();}
  p=10-m+1;q=10+m-1;
  for(n=1;n<=4;n++)
     {Stringa[p++]=Stringa[0];Stringa[q--]=Stringa[0];
      for(k=0;k<=18;k++)
      System.out.print(+Stringa[k]);
      System.out.println();}
  }

解决方案 »

  1.   

    Stringa 是什么东西???既然是String, 为什么还用arry来表示。直接用String阿。
    System.out.print(+Stringa[k])是什么意思?加号是作什么用的阿。而且你的Stringa有声明吗?
    说实话我看不太懂你的程序。如果仅仅是要那个结果的话,那么你只需要存储一个最原始的String(第一行)设那个*的位置为x,y.那么下面只需x--,y++找到需要添加的*位置。在需要一个变量l控制扩展的次数(后面开始收缩,一直到x,y相等)也不需要你那么多的变量阿。可能我说的不是很明白,呵呵,凑合着看吧。
    顺便问一下,你的程序能够编译吗?
      

  2.   

    //Xing3.java
    这样是对的吗?
    public class Xing3
    {
     public static void main(String args[])
      {
        char a[]=new char[9];
        int i,j,k,m;
        i=4;j=4;
        for(m=0;m<9;m++)
         a[m]=' ';
        for(m=1;m<=9;m++)
          {
           if(m<5) { a[i--]='*'; a[j++]='*'; }
           else if(m==5) { a[i]='*'; a[j]='*'; }
                else { a[i++]=' '; a[j--]=' ';}
           for(k=0;k<=8;k++)
           System.out.print(a[k]);
           System.out.println();
          }
        }
      

  3.   

    这样是对的吗
    //Xing3.javapublic class Xing3
    {
     public static void main(String args[])
      {
        char a[]=new char[9];
        int i,j,k,m;
        i=4;j=4;
        for(m=0;m<9;m++)
         a[m]=' ';
        for(m=1;m<=9;m++)
          {
           if(m<5) { a[i--]='*'; a[j++]='*'; }
           else if(m==5) { a[i]='*'; a[j]='*'; }
                else { a[i++]=' '; a[j--]=' ';}
           for(k=0;k<=8;k++)
           System.out.print(a[k]);
           System.out.println();
          }
        }
    }为什么这个程序在我的电脑上不能
    编译,但是在别人的电脑上又可以编译呢?
      

  4.   

    个人认为,classPath,path可能没有设置正确吧.
      

  5.   

    楼主程序复杂了点吧,我写了一个供你参考,可以从命令行指定要打印的行数,思路我做了注释。public class Xing1 {
      public static void main(String[] args) {    //默认打印9行
        int max = 9;    //从命令行获取要打印的行数参数
        if(args.length > 0) max = Integer.parseInt(args[0]);    //开始打印
        for(int i = 1, j, k, l; i <= max; i++) {      //当前行要打印的*号个数
          k = i <= max / 2 ? 2 * i - 1 : 2 * (max - i + 1) - 1;      //当前行要打印的空格个数
          j = (max - k) / 2;      //打印空格
          for(l = 0; l < j; l++)
            System.out.print(" ");      //打印*号
          for(l = 0; l < k; l++)
            System.out.print("*");      System.out.println();
        }
      }
    }
      

  6.   

    创建数组没有错啊
    如果只输出其中的一部分可以输出来的
    就是用Switch调用是不能输出来