main.java
package matrix;
import java.util.*;
/**
*
* @author Administrator
*/
public class Main { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Input a number");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int N = n*n;
changeDir maxtir =new changeDir();
maxtir.setNumber(N);
maxtir.setArray(n);
for(int i=n;i>=0;i=i-2)
{
maxtir.LTR(i);
maxtir.UTD(i);
maxtir.RTL(i);
maxtir.DTU(i);
maxtir.add();
}
maxtir.print(n);
}
}
changeDir.java:
package matrix;/**
*
* @author Administrator
*/
public class changeDir {
private int i,j;//显示时候的坐标x,y
private int array[][];//显示的数组
private int number[];//一共的数字
private int count=0;
public void add()
{
count++;
}
public void setNumber(int N)
{
for(int k=0;k<N;k++)
{
number[k] = k+1;
}
}
public void setArray(int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
array[i][j]=0;
}
}
} public void LTR(int n)//n是输入数值的大小
{
i=count;
for(j=count;j<n;j++)
{
array[i][j]=number[j];
}
}
public void UTD(int n)
{
j=n-1-count;
for(i=count;i<n;i++)
{
array[i][j]=number[i+j];
}
}
public void RTL(int n)
{
i = n-1-count;
int c=0;
for(j=n-1-count;j>=0;j--)
{
array[i][j] = number[i*2+c];
}
}
public void DTU(int n)
{
j=count;
int c=0;
for(i=n-1-count;i>=0;i--)
{
array[i][j]=number[i*3+c];
}
}
public void print(int n)
{
for(i=0;i<n;i++)
{
for (j = 0; j < n; j++)
{
System.out.printf("%2d", array[i][j]);
}
System.out.println();
}
}
}
package matrix;
import java.util.*;
/**
*
* @author Administrator
*/
public class Main { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Input a number");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int N = n*n;
changeDir maxtir =new changeDir();
maxtir.setNumber(N);
maxtir.setArray(n);
for(int i=n;i>=0;i=i-2)
{
maxtir.LTR(i);
maxtir.UTD(i);
maxtir.RTL(i);
maxtir.DTU(i);
maxtir.add();
}
maxtir.print(n);
}
}
changeDir.java:
package matrix;/**
*
* @author Administrator
*/
public class changeDir {
private int i,j;//显示时候的坐标x,y
private int array[][];//显示的数组
private int number[];//一共的数字
private int count=0;
public void add()
{
count++;
}
public void setNumber(int N)
{
for(int k=0;k<N;k++)
{
number[k] = k+1;
}
}
public void setArray(int n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
array[i][j]=0;
}
}
} public void LTR(int n)//n是输入数值的大小
{
i=count;
for(j=count;j<n;j++)
{
array[i][j]=number[j];
}
}
public void UTD(int n)
{
j=n-1-count;
for(i=count;i<n;i++)
{
array[i][j]=number[i+j];
}
}
public void RTL(int n)
{
i = n-1-count;
int c=0;
for(j=n-1-count;j>=0;j--)
{
array[i][j] = number[i*2+c];
}
}
public void DTU(int n)
{
j=count;
int c=0;
for(i=n-1-count;i>=0;i--)
{
array[i][j]=number[i*3+c];
}
}
public void print(int n)
{
for(i=0;i<n;i++)
{
for (j = 0; j < n; j++)
{
System.out.printf("%2d", array[i][j]);
}
System.out.println();
}
}
}
改了两个地方
public void setNumber(int N){
number=new int[N]; public void setArray(int n){
array=new int[n][n];
public class changeDir{
private int i,j;// 显示时候的坐标x,y
private int array[][];// 显示的数组
private int number[];// 一共的数字
private int count=0; public void add(){
count++;
} public void setNumber(int N){
number=new int[N];
for(int k=0;k < N;k++){
number[k]=k + 1;
}
} public void setArray(int n){
array=new int[n][n];
for(i=0;i < n;i++){
for(j=0;j < n;j++){
array[i][j]=0;
}
}
} public void LTR(int n)// n是输入数值的大小
{
i=count;
for(j=count;j < n;j++){
array[i][j]=number[j];
}
} public void UTD(int n){
j=n - 1 - count;
for(i=count;i < n;i++){
array[i][j]=number[i + j];
}
} public void RTL(int n){
i=n - 1 - count;
int c=0;
for(j=n - 1 - count;j >= 0;j--){
array[i][j]=number[i * 2 + c]; }
} public void DTU(int n){
j=count;
int c=0;
for(i=n - 1 - count;i >= 0;i--){
array[i][j]=number[i * 3 + c];
}
} public void print(int n){
for(i=0;i < n;i++){
for(j=0;j < n;j++){
System.out.printf("%2d",array[i][j]);
}
System.out.println();
}
}
}