gpt4 book ai didi

java - 使用通用数组

转载 作者:行者123 更新时间:2023-12-01 13:29:29 24 4
gpt4 key购买 nike

美好的一天。最近几个月我一直在学习java。所以我创建了一个通用数组,如下所示。

public class Implementation<T> implements IMatrix<T>{

private T[][] genMatrix;
private Integer numberRows;
private Integer NumberCols;
public Implementation(){
generateMatrix();
for(int i = 0;i< numberRows;i++)
{
for(int j =0;j< numberCols;j++)
{

JOptionPane.showInputDialog("Enter value for row " + (i+1) + " and for column " + (j+1)))

}
}
multiplyScalar(5);

}
//generate the array
public void generateMatrix(){
String rowString = JOptionPane.showInputDialog("Enter the number of rows!");
numberRows = Integer.parseInt(rowString);
String colString = JOptionPane.showInputDialog("Enter the number of cols!");
numberCols = Integer.parseInt(colString);

final Object[][] arrayO = (T[][])new Object[numberRows][numberCols];
genMatrix = (T[][])arrayO;
}
//writeElements to the array;
public void writeElem(int x, int y, T value){

genMatrix[x][y] = value;
}
//now that those members are done I have created a method to access the data
public T getElem(Integer i, Integer j){
return (T)genMatrix[i][j];
}

这就是我现在的问题所在。我制作了这个二维数组。我想将此数组中的每个值乘以 Integer c 。我尝试了以下方法,但都失败了。

 public IMatrix<T> multiplyScalar(Integer c) throws MatrixException {
// TODO Auto-generated method stub


for(int i = 0; i< numberRows; i++)
{
for(int j=0;j<numberCols;j++)
{
/**
THIS IS THE POINT AT WHICH IT CRASHES
*/
System.out.println(((Integer)(getElement(i, j)) * c));


}
}

return null;
}
}

由于 ClassCastException,程序崩溃。我已经尝试了我所知道的一切来让它发挥作用。我无法将二维数组与整数相乘。请帮忙。这使用了一个具有更多不相关功能的接口(interface)。请注意,由于我无法上传原始代码,因此该代码很有可能崩溃。

最佳答案

问题是Java不支持运算符多态性。您需要 T 扩展 Number,然后使用方法调用。但它比人们可能喜欢的要冗长一些。它在这里解释得很好:

Predefining multiplication for generics in java

关于java - 使用通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com