首页 > 解决方案 > 如何制作一个二维数组,其中下一行是Java中前一行的平方?

问题描述

我需要创建一个通用函数,它接受一个数字数组(整数、双精度数或其他任何值),然后创建一个二维数组,其中第一行是该数组,下一行是前一个的平方。我所做的给了我一个

java.lang.object 不能转换为 java.lang.number

即使我把E extends Number. 我只使用 int 尝试了相同的功能,它完成了我需要它做的事情。

我在哪里做错了?我使用“E extends Number”错了吗?

public static<E> void napraviMatricu(E[] niz) {
    int n = niz.length;
    E[][] matrica = (E[][]) new Object[n][n];

    for(int i = 0; i < matrica[0].length; i++)
        matrica[0][i] = niz[i];

    for(int i = 1; i < matrica.length; i++)
        for(int j = 0; j < matrica[i].length; j++)
            matrica[i][j] = matrica[i-1][j] * matrica[i-1][j];

    for(int i = 0; i < matrica.length; i++) {
        for(int j = 0; j < matrica[i]. length; j++)
            System.out.print(matrica[i][j] + " ");
        System.out.println("");
    }
}

标签: javaarraysmultidimensional-array

解决方案


这是你的问题:

E[][] matrica = (E[][]) new Object[n][n];

这样做(cls是类型Class<E>):

@SuppressWarnings("unchecked")
E[][] matrica = (E[][]) Array.newInstance(cls, n, n);

参考


推荐阅读