[英]Getting element from diagonal 2d array
嗨,有人可以帮我弄清楚以下问题。 我得到了二维数组来打印对角线元素,但它的方向错误,我不知道如何生成其他部分!
填写一个 N 行 N 列的数组,如下所示:
• 最后一列的元素(第 0 行和第 N-1 列的元素除外)由包含在 0 到 10 范围内的随机自然数创建。
• 第一列的元素(第 N-1 行和第 0 列的元素除外)由包含在 0 到 10 范围内的随机自然数创建。
• 从右上角到左下角的对角线元素是通过计算元素的行数的平方得到的。
• 获得任何其他元素:
✓ 如果它在对角线上方,则通过将随机数 0 或 1 或 2 添加到同一列和相邻下一行的元素。
✓ 如果它在对角线下方,则通过将随机数 1 或 2 或 3 添加到同一列和上相邻行的元素。
在这里你可以看到我到目前为止
public class TableauxJuinA {
public static void main(String[] args) {
// TODO Auto-generated method stub
//////////////bloc1:decleration des variables////////////
int n;
int a;
/////////////bloc2///////////////////////////////////////
n = (int)(1+Math.random()*(10)*2+1);
a = 0;
int[][]tab = new int [n][n];
///////////////////bloc3/?/////////////////
for (int j = 0; j < n-1; j++) {
tab[j][n-1] = (int) (Math.random()*10);
}
for (int j = 0; j <tab.length; j++) {
tab[j][0]=(int)(Math.random()*10);
for (int diagonale = 0; diagonale <tab.length; diagonale++) {
tab[diagonale][diagonale]= (int)(diagonale*diagonale);
}
}
aff(tab,n);
}
private static void aff(int[][] tab, int n ) {
for (int i = 0; i <n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(" [" + tab[i][j] + "]\t");
}
System.out.println();
你应该很好地考虑你的数组索引。 如果我有一个像下面这样的 3x3 数组,第一个数组(即 [1, 2, 3])的索引为 0。所以如果我想得到 3,你想要的对角线上的第一个数字,我必须调用数组[0][2],第一个数组的第三个数字(从零开始)。 因此,对角线左上角到右下角的索引确实是 array[x][x],但在这种情况下,右上角到左下角的索引是 array[0][2],array[1 ][1] 和数组[2][0]。 可以使用我在下面定义的 for 循环调用这些索引。
array = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
for (int row = 0; row < array.length; row++) {
for (int column = array.length - 1; column >= 0; column--) {
int diagonal = array[row][column]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.