输入一个数字n,输出n x n矩阵,从1开始,顺着下、右、上、左递归绕圈圈:
int i=0,j=0;
int step;
int n = 0;
int stub,type;
int result[][];
int val=1;
String tmp;
System.out.println("请输入一个正整数:");
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
tmp = bfr.readLine();
bfr.close();
if(tmp == null){
System.out.println("警告!没有输入值,程序将退出");
return;
}
n = Integer.parseInt(tmp);
stub = 2*n-1;
result = new int[n][n];
for(int k=1; k<=stub; k++){
type = k%4;
step = n-k/2;
if(type == 1){ //向下
for(int down=1; down<=step; down++){
result[i][j] = val;
val++;
i++;
}
i--;
j++;
}else if(type == 2){ //向右
for(int right=1; right<=step; right++){
result[i][j] = val;
val++;
j++;
}
j--;
i--;
}else if(type == 3){ //向上
for(int up=1; up<=step; up++){
result[i][j] = val;
val++;
i--;
}
i++;
j--;
}else if(type == 0){ //向左
for(int left=1; left<=step; left++){
result[i][j] = val;
val++;
j--;
}
j++;
i++;
}
}//end of outter for loop
// print result:
for(int rs[] : result){
for(int r : rs){
System.out.printf("%4d",r);
}
System.out.println();
}
1115

被折叠的 条评论
为什么被折叠?



