也许有人可以帮忙!在java中填充2d数组
我需要输出数组,看起来:
但我有:
我需要在脚本改变?我不需要一个完整的脚本,只需要一些基本的想法,我可以如何改进它!
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;
也许有人可以帮忙!在java中填充2d数组
我需要输出数组,看起来:
但我有:
我需要在脚本改变?我不需要一个完整的脚本,只需要一些基本的想法,我可以如何改进它!
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;
下面是工作的代码,这将产生所需的输出:
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)当使用嵌套循环我发现它的帮助来命名循环变量row
和col
来明确哪个是哪个。
2)使用递减计数器(a
)或通过递增计数器向后循环通过行和列循环。
你的代码几乎在那里,除了你有行颠倒。一个简单的解决方法是在分配值时反转行索引,即将A[i][j]
更改为A[9-i][j]
。
,将让你在正确的结果,但是:
如果检查代码,你会发现你在两个地方做9 - i
,所以也许i
应倒数。
您可以考虑advice of Extragorey来命名变量row
和col
以阐明它们的含义。
变量通常应该在首次使用时声明。你没有显示你的声明,所以我在下面添加了它们。
a = a + 1
最好写成a++
,并且它可以内嵌完成,分配到A
。
由于j
正在倒计时,所以只需将j>=0
检查添加到循环条件中即可。
您可以在for-loop初始化程序部分中声明和初始化多个变量,只要它们具有相同的类型即可,其中a
和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
欢迎StackOverflow的。首先,您可以通过删除链接来改善*问题*,并将输出**文本**复制/粘贴到问题中,以便我们可以读取/复制,比较您所指的文本,非常难以做到与图像(因此,通常downvotes)。谢谢! – davedwards
请提供您尝试实施的完整源代码,以更好地理解您的问题。没有人会窃取你的代码。 –