#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");
}
}