编写一段程序,输入一个有规律的图形。比如输入5或者关键参数为5时 ,打印如下效果。
long n=3;
int m=1;
for (int i = 0; i < 2 * n - 1; i++) {
long a = n-1;
int ans = 0;
int cout = 0;
for (int j = 0; j < 2 * n - 1; j++) {
if (i < n) {
if (ans == i) {
System.out.print(a + " ");
if (cout != 2 * n - 1 - 2 * i)
cout++;
if (cout == 2 * n - 1 - 2 * i)
a++;
} else {
System.out.print(a + " ");
a--;
ans++;
}
} else {
if (ans == i - 2 * m) {
System.out.print(a + " ");
if (cout != 2 * n - 2 * i + 4 * m - 1)
cout++;
if (cout == 2 * n - 2 * i + 4 * m - 1)
a++;
} else {
System.out.print(a + " ");
a--;
ans++;
}
}
}
if (i >= n)
m++;
System.out.println();
}
对二维数组按规律赋值应该会更简单点
public class Test {
public static void main(String[] args) throws Exception {
int n = 5;
int length = 2 * n - 1;
int[][] arr = new int[length][length];
for (int i = 0; i < n; i++) {
for (int j = i; j < length - i; j++) {
int num = n - i - 1;
// 行赋值
arr[i][j] = arr[length - i - 1][j] = num;
// 列赋值
arr[j][i] = arr[j][length - i - 1] = num;
}
}
// 打印二维数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}
}