也许有人可以提供帮助!
我需要输出看起来的数组:
但我有:
我需要在脚本中更改什么?我不需要一个完整的脚本,只需要一些基本的想法,我如何改进这个!
a = 1;
for (i=0; i<=9; i++)
for (j=9-i; j>=6-i; j--)
if (j>=0) {
A[i][j] = a; a=a+1;
答案 0 :(得分:0)
以下是将产生所需输出的工作代码:
public static void main(String[] args) {
int A[][] = new int[10][10];
int a = 1;
for(int i = 0; i <= 9; i++) {
for(int j = 9 - i; j >= 6 - i; j--) {
if(j >= 0) {
A[9-i][j] = a;
a = a + 1;
}
}
}
for(int i = 0; i <= 9; i++) {
StringBuilder printString = new StringBuilder();
for(int j = 0; j <= 9; j++) {
printString.append(A[i][j] + "\t");
}
System.out.println(printString);
}
}
生成输出:
34 0 0 0 0 0 0 0 0 0
33 32 0 0 0 0 0 0 0 0
31 30 29 0 0 0 0 0 0 0
28 27 26 25 0 0 0 0 0 0
0 24 23 22 21 0 0 0 0 0
0 0 20 19 18 17 0 0 0 0
0 0 0 16 15 14 13 0 0 0
0 0 0 0 12 11 10 9 0 0
0 0 0 0 0 8 7 6 5 0
0 0 0 0 0 0 4 3 2 1
答案 1 :(得分:0)
1)当使用嵌套循环时,我发现将循环变量row
和col
命名为明确哪个是有用的。
2)使用递减计数器(a
)循环遍历行和列,或者使用递增计数器向后循环行和列。
答案 2 :(得分:0)
您的代码几乎就在那里,除非您将行反转。一个简单的解决方法是在分配值时反转行索引,即将A[i][j]
更改为A[9-i][j]
。
然而,这会得到正确的结果:
如果您检查代码,您会注意到您在两个地方9 - i
执行了i
,因此row
可能会倒数。
您可以考虑advice of Extragorey为变量命名col
和a = a + 1
以澄清其含义。
变量通常应在首次使用时声明。您没有显示您的声明,因此我已将其添加到下方。
a++
最好写成A
,并且可以与j
的分配内联。
由于j>=0
正在倒计时,因此a
检查应添加到循环条件中。
您可以在for-loop初始化程序部分中声明和初始化多个变量,只要它们具有i
和int[][] A = new int[10][10];
for (int row = 9, a = 1; row >= 0; row--)
for (int col = row; col >= row - 3 && col >= 0; col--)
A[row][col] = a++;
for (int[] r : A) {
for (int v : r)
System.out.printf("%-4d", v);
System.out.println();
}
相同的类型。
因此,这是精炼的代码:
34 0 0 0 0 0 0 0 0 0
33 32 0 0 0 0 0 0 0 0
31 30 29 0 0 0 0 0 0 0
28 27 26 25 0 0 0 0 0 0
0 24 23 22 21 0 0 0 0 0
0 0 20 19 18 17 0 0 0 0
0 0 0 16 15 14 13 0 0 0
0 0 0 0 12 11 10 9 0 0
0 0 0 0 0 8 7 6 5 0
0 0 0 0 0 0 4 3 2 1
输出
leaflet