Replace Negative and Positive Matrix Elements with 0 & 1 in Java


In Java, Array is an object. It is a non-primitive data type which stores values of similar data type. The matrix in java is nothing but a multi-dimensional array which represents multiple rows and columns.

Here we have given a matrix which contains set of elements including both positive and negative numbers and as per the problem statement we have to replace negative numbers with 0 and positive numbers with 1.

Let’s deep dive into this article, to know how it can be done by using Java programming language.

To show you some instances

Instance-1

Given matrix =

-21 	22	-23
24	-25	26
-27	-28	29

After replacing the negative numbers with 0 and positive numbers with 1,

The resultant matrix is −

0 	1	0
1	0	1
0	0	1

Instance-2

Given matrix =

-9 	2	-2	4
-1	-7	-2	6
2	-2	-4	3
-1	4	7	-8

After replacing the negative numbers with 0 and positive numbers with 1,

The resultant matrix is −

0 	1	0	1
0	0	0	1
1	0	0	1
0	1	1	0

Instance-3

Given matrix =

-1 	-2	-3
4	5	6
-7	8	-9

After replacing the negative numbers with 0 and positive numbers with 1,

The resultant matrix is: -

0 	0	0
1	1	1
0	1	0

Algorithm

Algorithm-1

  • Step-1 − Create a 2D array matrix to store the numbers.

  • Step-2 − Call the replaceNum method to replace negative numbers with 0 and positive numbers with 1 in the matrix.

  • Step-3 − Print the resulting matrix.

  • Step-4 − In the replaceNum method, use a for loop to iterate over the rows and columns of the matrix.

  • Step-5 − For each element in the matrix, use a ternary operator to replace the number with 0 or 1, depending on whether it's negative or positive.

Algorithm-2

  • Step-1 − Create a 2D array matrix to store the numbers.

  • Step-2 − Call the replaceNum method to replace negative numbers with 0 and positive numbers with 1 in the matrix.

  • Step-3 − Print the resulting matrix.

  • Step-4 − In the replaceNum method, use a for loop to iterate over the rows and columns of the matrix.

  • Step-5 − For each element in the matrix, use the Math.signum method to determine the sign of the number (-1 for negative, 0 for 0, and 1 for positive). Then use an if-else statement to replace the number with 0 or 1, depending on whether it's negative or positive

Syntax

To get the length of an array (number of elements in that array), there is an inbuilt property of array i.e length

Below refers to the syntax of it −

array.length

where, ‘array’ refers to the array reference.

The Math.signum() method in Java is a mathematical function that returns the sign of a given double or float value (-1 for negative, 0 for 0, and 1 for positive).

Below refers to the syntax of it −

Math.signum(mat[a][b]) == -1.0)

Where, ‘mat’ refers to the given matrix.

Multiple Approaches

We have provided the solution in different approaches.

  • By Using Ternary Operator

  • By Using Math.signum Function

Let’s see the program along with its output one by one.

Approach-1: By Using Ternary Operator

In this approach, matrix elements will be initialized in the program. Then calls a user defined method by passing the matrix as parameter and inside method as per the algorithm using ternary operator replace negative numbers with 0 and positive numbers with 1.

Example

public class Main {
   public static void main(String[] args) {
      int[][] inputMatrix = {{-1, 2, -3},
         {4, -5, 6},
         {7, 8, -9}};
      
      // Call the User-defined method to replace negative and positive numbers
      replacenum(inputMatrix);
      
      // Print the resultant matrix
      for (int a = 0; a < inputMatrix.length; a++) {
         for (int b = 0; b < inputMatrix[a].length; b++) {
            System.out.print(inputMatrix[a][b] + " ");
         }
         System.out.println();
      }
   }
   
   // User-defined method to replace numbers 
   public static void replacenum(int[][] mat) {
      for (int a = 0; a < mat.length; a++) {
         for (int b = 0; b < mat[a].length; b++) {
            
            // Use a ternary operator to replace the number
            mat[a][b] = mat[a][b] < 0 ? 0 : 1;
         }
      }
   }
}

Output

0 1 0 
1 0 1 
1 1 0

Approach-2: By Using Math.signum Function

In this approach, matrix elements will be initialized in the program. Then calls a user defined method by passing the matrix as parameter and inside method as per the algorithm using Math.signum method replace negative numbers with 0 and positive numbers with 1.

Example

public class Main {
   public static void main(String[] args) {
      int[][] inputMatrix = {{-1, -2, 3},
         {4, -5, -6},
         {7, 8, 9}};
      
      // Call the User-defined method to replace negative and positive numbers
      replaceNum(inputMatrix);
      
      // Print the resultant matrix
      for (int a = 0; a < inputMatrix.length; a++) {
         for (int b = 0; b < inputMatrix[a].length; b++) {
            System.out.print(inputMatrix[a][b] + " ");
         }
         System.out.println();
      }
   }
   
   // User-defined method to replace numbers 
   public static void replaceNum(int[][] mat) {
      for (int a = 0; a < mat.length; a++) {
         for (int b = 0; b < mat[a].length; b++) {
            
            // Use an if-else statement with Math.signum method to replace the number
            if (Math.signum(mat[a][b]) == -1.0) {
               mat[a][b] = 0;
            } else {
               mat[a][b] = 1;
            }
         }
      }
   }
}

Output

0 0 1 
1 0 0 
1 1 1

In this article, we explored different approaches to replace negative numbers with 0 and positive numbers with 1 in a matrix by using Java programming language.

Updated on: 04-May-2023

283 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements