定义构造函数方法并在其中分配变量

时间:2015-09-23 16:04:22

标签: java arrays methods constructor

我之前发过这个问题,但不清楚。

但现在,我会更具体,并详细解释我的问题。

这是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);
    }

由于

1 个答案:

答案 0 :(得分:0)

1)和2)你永远不会分配data

。运行时出现NullPointerException

3)和4)具有相同的签名。不会编译。

5)println(data[i]\n)语法无效。不会编译。使用println(data[i])

6)k未分配。不会编译。