印刷魔术广场

时间:2014-02-15 21:34:21

标签: java printing magic-square

所以我正在尝试打印一个魔法广场。该程序已经完成,但是当它打印出魔术方块时,它会反转出来。 3X3的输出应如下所示:

8    1    6 
3    5    7 
4    9    2

但我得到了这个:

4    9    2
3    5    7
8    1    6

我不知道我做错了什么,任何帮助都会很棒。这是我制作魔术方块并打印它的代码:

  //magic square
  public static int[][] magicSq(int[][]table,int size){
    int [][]magic=new int[size][size];
    int row=size-1;
    int col=size/2;
    magic[row][col]=1;

    for(int i=2;i<=size*size;i++){
      if(magic[(row+1)%size][(col+1)%size]==0){
        row=(row+1)%size;
        col=(col+1)%size;
      }
      else{
        row=(row-1+size)%size;
      }
      magic[row][col]=i;
    }
    return magic;
  }

  //print magic sqaure
  public static void printSq(int[][]magic,int size){
    int constant=0;
    for(int r=0;r<size;r++){
      for(int c=0;c<size;c++)
        System.out.printf("%5d",magic[r][c]);
      System.out.println();
      constant=constant+magic[r][0];
    }
    System.out.println("The magic square contant is "+constant);
  }

1 个答案:

答案 0 :(得分:0)

如果您唯一的问题是它按照您想要的相反顺序打印行,您只需更改打印行的顺序:

for(int r=size-1;r>=0;r--)

另外,我对你的代码感到有点困惑。 magicSq方法接受一个int [] []表作为参数,但从来没有对它做任何事情。代码是否应该对该表执行某些操作?