2
public class DoubleMatrix
{
    private double[][] doubMatrix;

    public DoubleMatrix(int row, int col)
    {              
            if(row > 0 && col > 0)
            {
                    makeDoubMatrix(row,col);
            }
            else
            {
                    row = 1;
                    col = 1;
            }
    }

    public DoubleMatrix(double[][] tempArray)
    {
            if(tempArray != null)
            {
                    for(int i = 0; i < tempArray.length-1;i++)
                    {
                            if(tempArray[i].length == tempArray[i+1].length)
                            {
                                    tempArray = doubMatrix;
                            }
                    }
            }
            else
            {
                    makeDoubMatrix(1,1);
            }
    }

    public int getDim1()
    {
            return doubMatrix.length;
    }

    public int getDim2()
    {
            return doubMatrix[0].length;
    }

    private void makeDoubMatrix(int row, int col)
    {
      double[][] tempArray  = new double[row][col];
      for (int i = 0;i < row;i++)
      {
          for(int j = 0;j < col;j++)
          {
              tempArray[i][j] = Math.random() * (100);            
              doubMatrix[i][j] = tempArray[i][j];
         }
      }  
   }
    public DoubleMatrix addMatrix(DoubleMatrix secondMatrix)
    {      
            //this. doubMatrix = doubMatrix;
            double[][] tempArray;
            if(secondMatrix.doubMatrix.length == doubMatrix.length)
                    if(secondMatrix.doubMatrix[0].length == doubMatrix[0].length)
                    {
                            tempArray = new double[doubMatrix.length][doubMatrix[0].length];
                            for(int i = 0; i< secondMatrix.doubMatrix.length;i++)
                                  for(int j = 0; j< secondMatrix.doubMatrix[i].length;j++ )
                                  {
                                      tempArray[i][j] = secondMatrix.doubMatrix[i][j] + doubMatrix[i][j];// add two matrices
                                  }//end for    
                            return new DoubleMatrix (tempArray);
                    }


                            return  new DoubleMatrix(1,1);                                                                 
    }


    public DoubleMatrix getTransposedMatrix()
    {
            double[][] tempArray = new double[doubMatrix.length][doubMatrix[0].length];
            for(int i = 0;i < doubMatrix.length;i++)
            for(int j = 0;j < doubMatrix[i].length;j++)
            {
                tempArray[j][i] = doubMatrix[i][j];// transposed    matrix2          
            }//end for         
            return new DoubleMatrix(tempArray);
    }

    public DoubleMatrix multiplyingMatrix(DoubleMatrix secondMatrix)
    {
            double[][] tempArray = new double[secondMatrix.doubMatrix.length][doubMatrix[0].length];
            //check if dimension of matrix1 equal to dimension of matrix2  
            if(secondMatrix.doubMatrix[0].length == doubMatrix.length)
                    if(doubMatrix.length == secondMatrix.doubMatrix[0].length)
            {

                             for (int i = 0; i <secondMatrix.doubMatrix.length; i++)
                   {
                       for(int j = 0; j < doubMatrix[0].length; j++)
                        {

                           for (int k = 0; k < doubMatrix.length; k++)
                           {
                               tempArray[i][j] = tempArray[i][j] + secondMatrix.doubMatrix[i][k]*doubMatrix[k][j]; // multiply 2 matrices

                           }
                        }
                   }//end for  
            }// end if



                            return new DoubleMatrix(1,1);                                  
    }

    public void printMatrix(String text)
    {
            System.out.println(text);// output string
            for(int i = 0; i< doubMatrix.length;i++)
            {
                  for(int j = 0; j< doubMatrix[i].length;j++ )      {                                
                      System.out.printf("%9.1f", doubMatrix[i][j]);// out put value for matrices                   
                  }  
                  System.out.println();
            }
    }
}

public class Program3
{
public static void main(String[] args)
{
        int num1 = (int) (Math.random()*(10-3+1)+3);
        int num2 = (int) (Math.random()*(10-3+1)+3);
        DoubleMatrix doubMatObj1 = new DoubleMatrix(num1,num2);
        DoubleMatrix doubMatObj2 = new DoubleMatrix(doubMatObj1.getDim1(),doubMatObj1.getDim2());
        DoubleMatrix doubMatObj3;


        doubMatObj2.getDim1();

        doubMatObj3 = doubMatObj1.addMatrix(doubMatObj2);
        doubMatObj1.printMatrix("First Matrix Object");
        doubMatObj2.printMatrix("Second Matrix Object");
        doubMatObj3.printMatrix("Result of Adding Matrix Objects");
        doubMatObj2 = doubMatObj2.getTransposedMatrix();
        doubMatObj2.printMatrix("Result of inverting Matrix Object");
        doubMatObj3 = doubMatObj1.multiplyingMatrix(doubMatObj2);
        doubMatObj3.printMatrix("Result of Multiplying Matrix Objects");
}
}

Hi, I have a NullPointerException error in the last line statement of the makeDoubMatrix method as well the call makedoubMatrix in side if statement of the first constructor. doubMatrix seems to be null when I already initialize it. How will I be able to fix this problem ?

2 Answers 2

4

You want to initialize the array, i.e.:

private double[][] doubMatrix = new double[size1][size2];

where size1 and size2 are arbitrary sizes. What you probably want is:

if(row > 0 && col > 0)
{
    doubMatrix = new double[row][col];
    makeDoubMatrix(row,col);
}
else
{
    doubMatrix = new double[1][1];
    makeDoubMatrix(1,1);
}

which initializes the array doubMatrix to a size of row*col if both row and col are greather than 0, and to 1*1 otherwise, then calls makeDoubMatrix with its initialized size (you could have this method call after the if-else, using doubMatrix.size and doubMatrix[0].size, but I think it's more readable now).

Change the second constructor (which takes a 2D array) using the same reasoning.

Sign up to request clarification or add additional context in comments.

Comments

1

You're not initializing doubMatrix. The only line which assigns a value to doubMatrix is this commented out one:

//this. doubMatrix = doubMatrix;

(And that wouldn't help.)

Ask yourself where you think you're initializing it - where do you think you've got something like:

doubMatrix = new double[1][2];

... or an assignment copying a value from another array:

doubMatrix = someOtherVariable;

If you haven't got any statements assigning it a value, you aren't initializing it, so it will always have the default value of null.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.