Home » Java » Calling a constructor from method within the same class

Calling a constructor from method within the same class

Posted by: admin December 28, 2021 Leave a comment

Questions:

I’m new to java and I’m learning about creating object classes. One of my homework assignment requires that I call the constructor at least once within a method of the same object class. I’m getting an error that says The method DoubleMatrix(double[][]) is undefined for the type DoubleMatrix

Here’s my constructor:

public DoubleMatrix(double[][] tempArray)
{
    // Declaration
    int flag = 0;
    int cnt;

    // Statement

    // check to see if doubArray isn't null and has more than 0 rows
    if(tempArray == null || tempArray.length < 0)
    {
        flag++;
    }

    // check to see if each row has the same length
    if(flag == 0)
    {
        for(cnt = 0; cnt <= tempArray.length - 1 || flag != 1; cnt++)
        {
            if(tempArray[cnt + 1].length != tempArray[0].length)
            {
                flag++;
            }
        }
    }
    else if(flag == 1)
    {
        makeDoubMatrix(1, 1);// call makeDoubMatrix method
    }

}// end constructor 2

Here’s the method where I try and call the constructor:

public double[][] addMatrix(double[][] tempDoub)
{
    // Declaration
    double[][] newMatrix;
    int rCnt, cCnt;

    //Statement

    // checking to see if both are of same dimension
    if(doubMatrix.length == tempDoub.length &&
            doubMatrix[0].length == tempDoub[0].length)
    {
        newMatrix = new double[doubMatrix.length][doubMatrix[0].length];

        // for loop to add matrix to a new one
        for(rCnt = 0; rCnt <= doubMatrix.length; rCnt++)
        {
            for(cCnt = 0; cCnt <= doubMatrix.length; cCnt++)
            {
                newMatrix[rCnt][cCnt] = doubMatrix[rCnt][cCnt] + tempDoub[rCnt][cCnt];
            }
        }
    }
    else
    {
        newMatrix = new double[0][0];
        DoubleMatrix(newMatrix)
    }

    return newMatrix;
}// end addMatrix method

Can someone point me to the right direction and explain why I’m getting an error?

Answers:

Can someone point me to the right direction and explain why I’m getting an error?

The reason is .. you are not declaring your object correctly. As few answers pointed out, you need to give a keyword called new. This new keyword creates a new object for the class DoubleMatrix in Heap Memory.

else { newMatrix = new double[0][0]; new DoubleMatrix(newMatrix) }

Hope this helps

###

You can use this() to call the constructor from inside another constructor (or super() to call the parent class constructor) but you can’t the constructor from another method. Maybe you meant to create a new object? If so, just use new Object();. The constructor will be called for the new object.

###

You cannot call constructors from methods, you can call constructors only from other constructors using this or super keywords. You can only call a constructor once, and it has to be the first statement in your constructor body. If you do not call any constructor from a contructore body java compiler will implicitly insert super() statement into the constructor