0

所以我正在尝试打印一个魔术广场。该程序已完成,但是当它打印幻方时,它会反转。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);
  }
4

1 回答 1

0

如果您唯一的问题是它以与您想要的相反的顺序打印行,您可以更改打印行的顺序:

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

另外,我对你的代码有点困惑。方法 magicSq 接受一个 int[][]table 作为参数,但从不使用它做任何事情。代码应该对那个表做些什么吗?

于 2014-02-16T21:03:29.230 回答