本人大四学生一枚,刚接触java,老师出了个魔方阵,我水平有限,网上找了好多历程,改了改,凑了凑,总算可以用,有错误可以一起商量,勿喷。
import java.util.Scanner;
public class Mfan {
static int N = 16;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int[][] arr = new int[N][N];
int x = 0, p=1;
int i, j, k;
while(p==1) {
System.out.println("请输入1~16之间的奇数:");
x = in.nextInt();
if(x%2!=0)in.close();
if((x!=0)&&(x<N)&&(x%2!=0)) p = 0;
}
i = x + 1;
j = x / 2 + 1;
arr[1][j] = 1;
for(k = 2;k<=x*x;k++) {
i -= 1;
j += 1;
if((i<1)&&(j>x)) {
i += 2;
j -= 1;
}
else {
if(i<1)i = x;
if(j>x)j = 1;
}
if(arr[i][j]==0)arr[i][j] = k;
else {
i += 2;
j -=1;
arr[i][j] = k;
}
}
System.out.println("输出魔介数列");
for(i=1;i<=x;i++) {
for(j=1;j<=x;j++)
System.out.printf("%d\t", arr[i][j]);
System.out.println();
}
}
}