所以我正在尝试打印一个魔法广场。该程序已经完成,但是当它打印出魔术方块时,它会反转出来。 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);
}
答案 0 :(得分:0)
如果您唯一的问题是它按照您想要的相反顺序打印行,您只需更改打印行的顺序:
for(int r=size-1;r>=0;r--)
另外,我对你的代码感到有点困惑。 magicSq方法接受一个int [] []表作为参数,但从来没有对它做任何事情。代码是否应该对该表执行某些操作?