救命100求一个简单问题!在线等,立即结帐!
用java打一个二维数组 
 像这样的数组:要求是能从cmd输入一个数字n,打一个n行n列的矩阵!急急急,再线等! 
 8   1   6    
 3   5   7 
 4   9   2
------解决方案--------------------这样的题目在学校里的时候研究过,是奇数的话比较好做,但是是偶数的话好像麻烦了一点。有规律的。不过不会描述
------解决方案--------------------8 1 6  
 3 5 7 
 4 9 2   
 怎么出来的? 
 帮顶
------解决方案--------------------矩阵的值是如何出来的?随机生成?还是键盘输入?不过这两种情况程序都不复杂啊~~
------解决方案--------------------package csdn;   
 import java.util.Random; 
 import java.util.Scanner;   
 public class Test2  
 { 
 	public static void main(String[] args) 
 	{ 
 		Scanner in = new Scanner(System.in); 
 		int n = in.nextInt(); 
 		int[] toPrint = getRndNum(n * n);  		 
 		for (int i = 0; i  < n * n; i++) { 
 			System.out.print(toPrint[i] +  "\t "); 
 			if ((i+1) % n == 0)  
 				System.out.println(); 
 		} 
 	}  	 
 	public static int[] getRndNum(int n) 
 	{  	 
 	    int[] rnd = new int[n]; 
 	    int[] notRnd = new int[n];  	 
 	    for (int i = 0; i  < n; i++) { 
 	        notRnd[i] = i + 1; 
 	    }  	 
 	    Random random = new Random(); 
 	    int m = n; 
 	    int mm = 0; 
 	    for (int i = 0; i  < n; i++) { 
 	        if (m == 0) { 
 	            mm = 0; 
 	        } 
 	        else { 
 	            mm = random.nextInt(m); 
 	        } 
 	        rnd[i] = notRnd[mm]; 
 	        notRnd[mm] = notRnd[m - 1]; 
 	        m--; 
 	    } 
 	    return rnd; 
 	} 
 }
------解决方案--------------------强! 
 mark!
------解决方案--------------------路过
------解决方案--------------------package temp; 
 import java.util.*;   
 public class Magic{ 
 	public static void main(String[] args) { 
 		Scanner  in = new  Scanner(System.in); 
 		System.out.println( "输入n "); 
 		int  n = in.nextInt( ); 
 		int m[][]=new int[n][n]; 
 		int i,j,number; 
 		i=0;j=n/2; 
 		m[i][j]=1; 
 		for(number=2;number <n*n;number++){ 
 			if(m[(i-1+n)%n][(j+1)%n]==0){ 
 				i=(i-1+n)%n;j=(j+1)%n; 
 			} 
 			else{ 
 				i=(i+1)%n; 
 			} 
 			m[i][j]=number; 
 		} 
 		for(i=0;i <n;i++){ 
 			for(j=0;j <n;j++){ 
 				System.out.print(m[i][j]+ "\t "); 
 			} 
 			System.out.println( "  "); 
 		} 
 	} 
 }
------解决方案--------------------学习
------解决方案--------------------学习
------解决方案--------------------justicesun()  
 写得不错,只是少写了一句 
 应该在m[i][j]=1; 
 后面加上一句 
 m[n-1][j]=n*n;
------解决方案--------------------课堂上做过,当时要求是奇数,   
 算法是: 
 1、n行n列的二维数组,1放在第一行中间,以后都放在前一个数的右上角的格里 
 2、如果出了上边界,就到最后一行,如果出了右边界,就放到第一列 
 3、如果要放的位置已有数,就退回来,放到自己的下面 
 4、用一个函数专门生成下一个数的位置,也就是一对下标,可以用一个数组返回 
 5、循环,放一个数,取一个位置,在放数,在取 
 6、返回位置的函数可以用static属性记录上一个返回的位置,也可以用参数传进来上一个数的位置,然后不管出不出界,列+1,行-1,然后用多个if-else判断是否出界,如果行出看列出不出,做完处理后看这个位置有没有数,如果有,在回来,在行+1,然后返回位置
------解决方案--------------------