我之前发过这个问题,但不清楚。
但现在,我会更具体,并详细解释我的问题。
这是2个包的项目,第一个包有两个类(Matrix,Operator),我只关注第一个类,即矩阵
我有七个矩阵类的构造函数/方法要求,但我会在这里发布六个,我想检查我是否正确编写代码或者不是每个构造函数的方法 - 这就是我在这里发布此问题的原因 -
在第一个构造函数方法之前,我还必须检查是否为这三个字段数据成员编写了正确的代码,我将在所有方法之前定义它
Matrix类的字段数据成员
(1)“data” - 使用2D数组来存储所有元素的值,使用“double”。
(2)“rows” - 使用“int”定义矩阵的行数。
(3)“cols” - 使用“int”定义矩阵的列数。
这是我的代码:
double [] []data;
int rows;
int cols;
不正确,还是我错误定义了?
现在是Matrix类方法:
第一个构造函数方法:
(1)构造函数1-空参数(默认构造函数)。为行和列分配1,为所有元素分配0.0。
这是我的代码:
Matrix() {
rows = 1;
cols = 1;
data [rows] [cols] = 0.0;
}
怎么样?
第二个构造函数方法
(2)构造函数2-两个参数(int,int),赋值行和列属性,所有元素都等于0
这是我的代码:
Matrix(int a, int b) {
rows = a;
cols = b;
for(int i=0; i<=rows;i++)
{
for(int j=0; j<=cols;j++)
{
data[i][j] = 0;
}
}
}
第三个构造函数方法
(3)构造函数3(10%) - 三个参数(int,int,double),使用第三个参数“double”分配元素,这是一个2D数组。您需要进行一些检查以确保输入的2D数组至少应具有与前两个输入参数相同的行数和列数。如果传递的2D数组支持的数据多于所需的行和列,则可以。你可以简单地忽略那些额外的数字。 (提示:要检查数组的大小,请使用数组对象的“length”数据成员)
这是我的代码:
Matrix(int c, int d, double [] [] e){
c = rows;
d = cols;
data = e;
for (c = 0; c < e.length ; c++) {
for (d = 0; d < e[0].length ; d++) {
System.out.println(e[c][d]);
}
}
}
第四个构造函数方法
(4)构造函数4-三个参数(int,int,double)。这与“构造函数3”非常相似。唯一的区别是第三个参数,即一维数组。这里有点棘手,你需要自己将1D转换为2D。我们假设1D数组中的元素是行式的。例如a [] = {5,2,3,4,3,2},如果将此数组存储到3 x 2矩阵中。第一行为5,2,3,第二行为4,3,2
这是我的代码:
Matrix(int c, int d, double [] f){
c = rows;
d = cols;
double [] []v;
for (int i = 0, k=0; i < 4; i++){
for (int j = 0; j < 4; j++){
v[j][i] = f[k++];
}
}
}
第五个构造函数方法
(5)void printMat()(10%) - 逐行打印矩阵数据。例如如果矩阵有数据[2] [3] = {5,2,3,4,3,2},那么这个函数会在控制台上打印出来:
5, 2, 3,
4, 3, 2
这是我的代码:
void printMat(){
for (int i = 0; i < data.length ; i++) {
for (int j = 0; j < data[0].length ; j++) {
System.out.println(data[i]\n);
}
}
}
第六个构造函数方法
(6)void copyTo(Mat mat)(10%) - 将当前矩阵的值复制到输入变量“mat”。例如Mat a;马特b; ...; a.copyTo(b)中; // b将与
相同这是我的代码
void copyTo(Mat mat){
Mat k;
k.copyOf(mat);
}
由于
答案 0 :(得分:0)
1)和2)你永远不会分配data
。
3)和4)具有相同的签名。不会编译。
5)println(data[i]\n)
语法无效。不会编译。使用println(data[i])
。
6)k
未分配。不会编译。