我需要创建一个通用函数,它接受一个数字数组(整数、 double 或其他数字),然后创建一个二维数组,其中第一行是该数组,下一行是前一个数组的平方。我所做的给了我一个
java.lang.object cannot be cast to 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("");
}
}
最佳答案
这是你的问题:
E[][] matrica = (E[][]) new Object[n][n];
执行此操作( cls
的类型为 Class<E>
):
@SuppressWarnings("unchecked")
E[][] matrica = (E[][]) Array.newInstance(cls, n, n);
关于java - 如何在Java中创建一个二维数组,其中接下来的每一行都是前一行的平方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61045817/