java打印螺旋方阵方法

徐歌 2016-12-02 12:04:48


import java.util.Scanner;

public class SpiralPhalanx {
public int[][] getArr(int[][] arr,int direction,int n){
int count=1;
int x=0;
int y=0;
final int UP=0,RIGHT=1,DOWN=2,LEFT=3;

//获得x,y的初始值
switch (direction){
case UP: {
x=n/2; y=(n-1)/2; break;
}
case RIGHT: {
x=(n-1)/2; y=(n-1)/2; break;
}
case DOWN: {
x=(n-1)/2; y=n/2; break;
}
case LEFT: {
x=n/2; y=n/2; break;
}
}

for(int i=1;i<=n;i++){
for (int j=1;j<=2*i && count<=n*n;j++){
arr[x][y]=count++;

direction=direction%4;
if (direction==UP) {x--;}
else if (direction==RIGHT) {y++;}
else if (direction==DOWN) {x++;}
else if (direction==LEFT) {y--;}

if (j%i==0) direction=direction+1;
}
}

return arr;
}

public void printSpiralPhalanx(int[][] arr,int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print("\t"+arr[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) throws Exception{
Scanner sc=new Scanner(System.in);
System.out.print("请输入螺旋方阵的行数: ");
int n=sc.nextInt();
System.out.print("请输入螺旋方阵起始方向(UP=0,RIGHT=1,DOWN=2,LEFT=3): ");
int direction=sc.nextInt();
int[][] arr=new int[n][n];
SpiralPhalanx sprial=new SpiralPhalanx();
sprial.getArr(arr, direction, n);
sprial.printSpiralPhalanx(arr, n);
}

}
...全文
337 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧