Почему сложение матриц не работает в этом коде?

#java #arrays #function #matrix #methods

#java #массивы #функция #матрица #методы

Вопрос:

Кто-нибудь может сказать мне, почему сложение матриц не работает в этом коде? Все остальные части программы работают, кроме части сложения. Это просто печать пустого массива в качестве вывода.

 import java.util.*;

class matrix{
    int n1, n2 = 0;
    int[][] matrix1 = new int [n1][n2];
    int[][] matrix2 = new int [n1][n2];
    int[][] matrix3 = new int [n1][n2];
    Scanner sc = new Scanner(System.in);
     
    // get the dimensions of the matrix//
    void Matrix() {
        int n1, n2 = 0;
        System.out.println(" enter the dimension of the matrix");
        n1 = sc.nextInt();
        n2 = sc.nextInt();
        int[][] matrix1 = new int [n1][n2];
        int[][] matrix2 = new int [n1][n2]; 
    
     
        //get the values of the elements//
        System.out.println("Enter the elements of the matrix");
        for (int i = 0; i < n1; i  ) {
            for (int j = 0; j < n2; j  ) {
                matrix1[i][j] = sc.nextInt();
                matrix2[i][j] = matrix1[i][j];
            }
        }
        // print the arrays
        System.out.println("matrix1" Arrays.deepToString(matrix1));
        System.out.println("matrix2" Arrays.deepToString(matrix2));
    }

    void add() {
        int[][] matrix3 = new int[n1][n2];
        for (int i = 0; i < n1; i  ) {
            for(int j=0; j < n2; j  ) {
                matrix3[i][j] = matrix1[i][j]   matrix2[i][j];
            }
        }
        System.out.println("Addition of the elements"   Arrays.deepToString(matrix3));
    }
}
  
 public class arrays2 {
    public static void main(String[] args) {
        matrix M1 = new matrix();
        M1.Matrix();
        M1.add();   
    }
}
  

Комментарии:

1. Потому что у вас есть локальные матрицы matrix1 matrix2 в области метода Matrix() . Вам не нужно повторно объявлять их внутри метода, просто назначьте.

Ответ №1:

Вам не нужно повторно объявлять переменные экземпляра n1 , n2 , matrix1 , matrix2 внутри метода Matrix() , если вы собираетесь использовать их в другом методе:

 // get the dimensions of the matrix//
    void Matrix() {
        System.out.println(" enter the dimension of the matrix");
        this.n1 = sc.nextInt();
        this.n2 = sc.nextInt();
        this.matrix1 = new int [n1][n2];
        this.matrix2 = new int [n1][n2]; 
     
        //get the values of the elements//
        System.out.println("Enter the elements of the matrix");
        for (int i = 0; i < n1; i  ) {
            for (int j = 0; j < n2; j  ) {
                matrix1[i][j] = sc.nextInt();
                matrix2[i][j] = matrix1[i][j];
            }
        }
        // print the arrays
        System.out.println("matrix1" Arrays.deepToString(matrix1));
        System.out.println("matrix2" Arrays.deepToString(matrix2));
    }
  

Ответ №2:

Вы уже объявили n1 , n2 , matrix1 и matrix2 в начале вашего класса, поэтому вам не следует повторно объявлять их внутри вашего метода Matrix() , потому что они будут рассматриваться как локальные переменные.

Ваш код должен быть примерно таким :

 void Matrix() {
n1 = 0;
n2 = 0;
System.out.println(" enter the dimension of the matrix");
n1=sc.nextInt();
n2=sc.nextInt();
matrix1= new int [n1][n2];
matrix2= new int [n1][n2];
...  
  

Ответ №3:

     Scanner sc=new Scanner(System.in);
    System.out.println("enter the size of row:-");
    int r=sc.nextInt();
    System.out.println("enter the column of array:-");
    int c=sc.nextInt();
    int[][] arr1=new int[r][c];
    int[][] arr2=new int[r][c];
    int[][] arr3=new int[r][c];
    int i,j,k,l,m,n;
    System.out.println("first matrix:- ");
    for(i=0;i<r;i  )
    {
        for(j=0;j<c;j  )
        {
            arr1[i][j]=sc.nextInt();
        }
    }System.out.println("second matrix:");
    for(i=0;i<r;i  )
    {
        for(j=0;j<c;j  )
        {
            arr2[i][j]=sc.nextInt();
        }
    }System.out.println("third matrix:- ");
    for(i=0;i<r;i  )
    {
        for(j=0;j<c;j  )
        {
            arr3[i][j]=arr1[i][j] arr2[i][j];
        }
    }System.out.println("adding is:- ");
    for(i=0;i<r;i  )
    {
        for(j=0;j<c;j  )
        {
            System.out.println(arr3[i][j] " ");
        }
    }System.out.println("n");
    
}
  

}