尝试创建具有int列,行和值的泛型类型的矩阵对象。 注意:下面的代码使用整数类型来简化。
示例输出:
21 703 22 23
3 3 13 13 6
或
studone studtwo studthree
studfour studnine studten
studran studmoreran studplus
尝试:
我的想法:Matrix将有col,rows ...所以x ArrayList的行和y ArrayList的cols
这是构造函数:
private ArrayList<ArrayList<Integer>> matrixOne;
public Matrix(int rows, int columns) {
this.rows = rows;
this.columns = columns;
matrixOne = new ArrayList<ArrayList<ArrayList>>();
for(int i = 0; i < rows; i++) {
matrixOne.add(new ArrayList<ArrayList>());
}
for(int j = 0; j < columns; j++) {
matrixOne.get(j).add(new ArrayList<Integer>());
}
}
问题:当尝试为特定行/ col添加值时,我得到了 以下方法中的跟随错误:类型为Integer的方法add(int)未定义
// on method .add() <-------- error
public void insert(int row, int column, int value) {
matrixOne.get(row).get(column).add(value);
}
答案 0 :(得分:1)
你正在遮蔽你的领域
private ArrayList<ArrayList<Integer>> matrixOne;
与
ArrayList<ArrayList<ArrayList>> matrixOne = new ArrayList<ArrayList<ArrayList>>();
除了ArrayList之外没有任何其他类型。试试这个:
matrixOne = new ArrayList<ArrayList<Integer>>();
答案 1 :(得分:1)
我建议您改用维数数组。以下是将列表(矢量)转换为维数组的简单实现。灵感来自R的matrix(vec,nrow = 3,ncol = 3)
public static void main(String[] args){
int[] vec = {2,3,4,5,6,7,8,9,10};
toMatrix(vec,3,3);//parameters: vector(list),row of expected matrix,column of expected matrix
}
public static int[][] toMatrix(int[] vec,int row ,int col){
int[][] matrix = new int[row][col];
int vecIndex = 0;//list index to pop the data out from vector
//Vector to matrix transformation
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(vecIndex==vec.length) break;
matrix[i][j] = vec[vecIndex++];//pop the vector value
}
}
// Displaying the matrix, can ignore if not necessary
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
return matrix;
}
答案 2 :(得分:0)
试试这个:
public void insert(int row, int column, int value) {
matrixOne.get(row).add(column, value);
}