单魔方阵 Java实现
/*
* 单魔方阵
*/
package practice;
import java.util.Scanner;
public class Demo37 {
public static void mfz(int n) {
int[][] a=new int[n][n];//定义二维数组
int m=0;//控制行
int k=0;//控制列
for(int i=1;i<=n*n;i++) {
//i-1不是n的倍数
if(i==1) {
m=0;
k=(n-1)/2;
a[m][k]=i;//1始终放置在第一行的中间
}else {
if(((i-1)%n)!=0) {
//如果a在第1行或在第n列,则m置为n,k置为1
if(m==0) {
m=n-1;
k=k+1;
a[m][k]=i;
}else if(k==n-1) {
m=m-1;
k=0;
a[m][k]=i;
}
//如果a不在第1行或第n列,则a+1行数=a行数-1,a+1列数=a列数+1
else {
m=m-1;
k=k+1;
a[m][k]=i;
}
}
else if(((i-1)%n)==0){//i-1为n的倍数时,a+1放置在a的下面一行,列不变
m=m+1;
k=k;
a[m][k]=i;
}
}
}
a.toString();//将数组转换成字符串,以控制输出格式
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
System.out.print(String.format("%-2d",a[i][j])+" ");//左对齐输出
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入n的值:");
int n=sc.nextInt();
mfz(n);
}
}