【发布时间】:2014-02-08 22:30:36
【问题描述】:
美好的一天。最近几个月我一直在学习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 而崩溃。我已经尝试了我所知道的一切来让它发挥作用。我不能将二维数组与整数相乘。请帮忙。这使用了一个具有更多无关功能的接口。请注意,由于我无法上传原始代码,此代码很可能会崩溃。
【问题讨论】:
-
运行程序时是
T还是Integer?如果不是,演员就无法工作...... -
@assylias no T 不是整数。我怎样才能得到它一个整数
-
@Jonathan 您的代码允许
T是任何东西,例如文件。将文件乘以数字没有意义。因此,您需要对T施加更多限制。 -
如果您不需要泛型,请不要使用它们!为什么在您总是期望特定类型的地方使用未知类型?
标签: java generics multidimensional-array