如何将二维数组乘以因子

时间:2017-07-27 20:02:29

标签: java arrays multidimensional-array

我有二维数组

private static int [][] n = {{1, 2, 3, 4}, {5, 6, 7, 8}}; 

我有

int m = 3; 

如何将二维数组中的每个元素乘以3?
所以输出将是这样的:

{{3, 6, 9, 12},{15, 18, 21, 24}}

另外,如果我有像

这样的矩阵
{{1, 2, 3, 4, 5}, 
{6, 7, 8, 9, 10}, 
{11, 12, 13, 14, 15}, 
{16, 17, 18, 19, 20}, 
{21, 22, 23, 24, 25}}, 

我如何打印对角元素?

{1,7,13,19,25} and {5,9,12,17,20}

我想知道算法,因为我使用的维度数组倍增

private static int[] n = {1, 2, 3, 4, 5, 6, 7};

private static int[] multiply(int[] n, int m) {

    int array[] = new int[n.length];
    for (int i = 0; i < n.length; i++) {
        array[i] = n[i] * m;
    }
    return array;

}

4 个答案:

答案 0 :(得分:3)

只需迭代这两个维度:

private static int[][] multiply(int[][] n, int m) {
    int array[][] = new int[n.length][];
    for (int i = 0; i < n.length; i++) {
        array[i] = new int[n[i].length];
        for (int j = 0; j < n[i].length; j++) {
            array[i][j] = n[i][j] * m;
        }
    }
    return array;
}

答案 1 :(得分:2)

你需要2个for循环

int [][] n = {{1, 2, 3, 4}, {5, 6, 7, 8}};
for(int i=0;i<2;i++)
    for(int j=0;j<4;j++)
        n[i][j]*=3;

这里我们正在逐行访问数组。

答案 2 :(得分:1)

由于其他答案没有向您展示如何打印对角线元素,所以就是这样:

for (int i = 0; i < n.length; i++)
    System.out.println(n[i][i]);

因为对角元素具有相等的第一和第二指数:[i][i]

答案 3 :(得分:0)

对于第一项任务,您可以使用简单的循环:

int m = 3;
for(int i = 0; i < n.length; i++){
    for(int j = 0; j < n[i].length; j++){
        n[i][j] *= m;
    }
}

对于第二个,重要的是观察来自left-up to right-down的对角线元素具有相同的索引行和列。来自left-down to right-up的对角线,您只需要反转行或列。例如,反转行,而不是从0开始,您从row.length - 1

开始
 | 0  1  2  3  4
------------------
0| 1           5
1|    7     9
2|      13
3|   17     19    
4|21           25

因此,为了获得对角线,你只需要做一个循环:

int[] d1 = new int[array.length];

int[] d2 = new int[array.length];

for(int i = 0; i < array.length; i++){
    d1[i] = array[i][i];
    d2[i] = array[array.length-1-i][i];
}

您只需确保行和列的长度相同,否则可能会抛出ArrayIndexOutOfBoundsException