Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a constructor from method within the same class

Tags:

java

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?

like image 766
Nathan Avatar asked Oct 27 '13 03:10

Nathan


3 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

like image 61
Vikram Avatar answered Nov 15 '22 12:11

Vikram


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.

like image 21
0x6C38 Avatar answered Nov 15 '22 11:11

0x6C38


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

like image 25
Evgeniy Dorofeev Avatar answered Nov 15 '22 11:11

Evgeniy Dorofeev