二维数组练习
要求: 把数字打印成如下图形
方法一:
在这里插入代码片
import java.util.Scanner;
public class 回型数 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数字");
int a=scanner.nextInt();
int [][] arr=new int [a][a];//定义二维数组
int s=a*a;//回型数内最大值
// 1,先向右.2,在向下 3,向左,4,向右
int k=1,i=0,j=0;// k负责方向
for (int m = 1; m <=s; m++) { //m负责每次打印的个数
if (k==1) { //先向右打印
if (j<a && arr[i][j]==0) {
arr[i][j++]=m;
}else {
k=2;
i++;
j--;
m--;
}
}else if (k==2){
if (i<a && arr[i][j]==0) {
arr[i++][j]=m;
}else {
k=3;
i--;
j--;
m--;
}
}else if (k==3){
if (j>=0&& arr[i][j]==0) {
arr[i][j--]=m;
}else {
k=4;
i--;
j++;
m--;
}
}else if (k==4){
if (i>=0 && arr[i][j]==0) {
arr[i--][j]=m;
}else {
k=1;
i++;
j++;
m--;
}
}
}
//遍历
for (int m = 0; m < arr.length; m++) {
for (int n = 0; n < arr[m].length; n++) {
System.out.print(arr[m][n]+"\t");
}
System.out.println();
}
scanner.close();
}
}