public class Hii
{
public static void main(String args[])
     { 
          int n=3;
          int i,x,y;
          Integer a[][]=new Integer [100][100];
          x=1;
          y=n/2+1;
          a[x][y]=1;
          for(i=2;i<=n*n;i++)
              if ((x-1==0)&&(y-1==0))  /*矩阵左上角向下放数*/
                  {x++;
                   a[x][y]=i;}
              else
                  {x--;                /*向斜上延伸放数*/
                   if(x==0)
                   x=n;
                   y--;
                   if(y==0)
                   y=n;
                   if(a[x][y]>0)
                   x=x+2;
                   y++;
                   a[x][y]=i;}          for(x=1;x<=n;x++)
             {for(y=1;y<=n;y++)
              System.out.println(a[x][y]);}
        }
}语法又错了,请大家指点!

解决方案 »

  1.   

    这个是魔方的C程序,我想改成JAVA
      

  2.   

    public class Hii
    {
    public static void main(String args[])
         { 
              int n=3;
              int i,x,y;
              Integer a[][]=new Integer [100][100];
              x=1;
              y=n/2+1;
              a[x][y]=new Integer(1); //~~~~~~~~~~~~~~~~
              for(i=2;i<=n*n;i++)
                  if ((x-1==0)&&(y-1==0))  /*矩阵左上角向下放数*/
                      {x++;
                       a[x][y]=new Integer(i); //~~~~~~~~~~~~~~~~
                       }
                  else
                      {x--;                /*向斜上延伸放数*/
                       if(x==0)
                       x=n;
                       y--;
                       if(y==0)
                       y=n;
                       if(a[x][y].intValue()>0) //~~~~~~~~~~~~~
                       x=x+2;
                       y++;
                       a[x][y]=new Integer(i); //~~~~~~~~~~~~~~~~
                       }          for(x=1;x<=n;x++)
                 {for(y=1;y<=n;y++)
                  System.out.println(a[x][y]);}
            }
    }
      

  3.   

    Integer a[][]=new Integer [100][100];改成
    int a[][]=new int[100][100];
      

  4.   

    Exception in Thread "main" java.lang.ArrayIndexOutOfBoundsException:1
             at hii.main(Hii.java:97)
      

  5.   

    类型不匹配:不能从 int 转换为 Integer
    Integer a[][]=new Integer [100][100];
    int a[][] =new int[100][100];
      

  6.   

    问题在于a[x][y]=1;a[x][y]=为Integer类型,而1默认为int类型,两者类型不通
    正确写法为a[x][y]=new Integer(1);
    同样的a[x][y]=i改为a[x][y]=new Integer(i);
      

  7.   

    Exception in Thread "main" java.lang.ArrayIndexOutOfBoundsException:1
             at hii.main(Hii.java:97)
    改好了,运行是这个错误!
    97:if(a[x][y].intValue()>0)这是意思啊?
      

  8.   

    C程序还有吗?可以贴出来了。只看你改写的java程序,可能有些问题看不出来。还有if(a[x][y].intValue()>0) 这里的a[x][y]可能存在为null的场合,会报空指针的错误另外这个数组可以定义为int型
      

  9.   

    /*魔方*/
    #include <stdio.h>
    main()

    int n;
    int i,x,y;
    int a[100][100];
    clrscr();
    scanf("%d",&n);x=1,y=n/2+1;
    a[x][y]=1;for(i=2;i<=n*n;i++)
      if ((x-1==0)&&(y-1==0))  /*矩阵左上角向下放数*/
          {x++;
          a[x][y]=i;
          }
      else
          {x--;                /*向斜上延伸放数*/
          if(x==0)
          x=n;
          y--;
          if(y==0)
          y=n;
          if(a[x][y]>0)
           x=x+2,y++;
          a[x][y]=i;
          }for(x=1;x<=n;x++)
       {for(y=1;y<=n;y++)    printf("%d    ",a[x][y]);      printf("\n");
        }getch();
    }这是C程序
      

  10.   

    public class Hii {
      public Hii() {
      }
    public static void main(String args[]){
        int n=3;
        int i,x,y;
        int a[][]=new int[100][100];
        x=1;
        y=n/2+1;
        a[x][y]=1;
        for(i=2;i<=n*n;i++)
            if ((x-1==0)&&(y-1==0))  /*矩阵左上角向下放数*/
                {x++;
                 a[x][y]=i;}
            else
                {x--;                /*向斜上延伸放数*/
                 if(x==0)
                 x=n;
                 y--;
                 if(y==0)
                 y=n;
                 if(a[x][y]>0)
                 x=x+2;
                 y++;
                 a[x][y]=i;}    for(x=1;x<=n;x++)
           {for(y=1;y<=n;y++)
            System.out.println(a[x][y]);}
    }
    }--------------
    运行结果是这个?没有错吧
    070090080