java回形数矩阵
Posted DQ_CODING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java回形数矩阵相关的知识,希望对你有一定的参考价值。
题目
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2
4 3
输入数字3,则程序输出: 1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
参考
代码
public class LoopsNumber
public static void main(String[] args)
System.out.println("请输入回形数矩阵的大小:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
loop(num);
scanner.close();
public static void loop(int num)
int[][] arr = new int[num][num];
// 右箭头方向
// arr[0][0]=1;
// arr[0][1]=2;
// arr[0][2]=3;
// 下箭头方向
// arr[1][2]=4;
// arr[2][2]=5;
// arr[2][1]=6;
// 左箭头方向
// arr[2][0]=7;
// arr[1][0]=8;
// 上箭头方向
// arr[1][1]=9;
// 值
int value=1;
// 行
int i=0;
// 列
int j=0;
// 矩阵最中心的值为num*num,此时赋值结束
while (arr[i][j]!=Math.pow(num,2))
arr[i][j]=value;
/*当遇到四个角的拐点时,进行判断,然后对i和j的值进行递增或者递减;int型的二维数组在没有赋值时内层元素默认为0,作为判断条件*/
//右箭头方向赋值
if(j!=num-1&&arr[i][j+1]==0)
//为了预防还没有走到最上面就往右箭头方向赋值
if (i>0&&arr[i-1][j]==0)
i--;
else
j++;
//下箭头方向赋值
else if (i!=num-1&&arr[i+1][j]==0)
i++;
//左箭头方向赋值
else if (j>0&&arr[i][j-1]==0)
j--;
//上箭头方向赋值
else if (i>0&&arr[i-1][j]==0)
i--;
value++;
for (int[] ints : arr)
for (int anInt : ints)
System.out.print(anInt + "\\t");
System.out.println();
以上是关于java回形数矩阵的主要内容,如果未能解决你的问题,请参考以下文章