美好的一天。我最近几个月一直在学习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,程序崩溃。我已经尝试了所有知识,以使其发挥作用。我不能将二维数组乘以整数。请帮忙。这使用了一个具有更多无关功能的接口。请注意,由于无法上传原始代码,因此此代码很可能崩溃。
答案 0 :(得分:1)
问题是Java不支持运算符多态。您需要T来扩展Number,然后使用方法调用。它比人们想要的更加冗长。它在这里安静得很清楚: