Dado estes trechos de código, como fazer para que quando for invocado o método somar(), o programa solicite as dimensões das matrizes apenas uma vez, ou seja," Digite o número de linhas das matrizes "…“Digite o número de colunas das matrizes”
Classe Matriz
import java.util.Scanner;
public class Matriz {
private double mat[][];
private int m;
private int n;
public Matriz (int l, int c){
m = l;
n = c;
mat = new double [m][n];
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public static Matriz lerMatriz(int m, int n) {
Matriz matriz = new Matriz(m, n);
matriz.lerMatriz();
return matriz;
}
public void lerMatriz(){
Scanner input = new Scanner(System.in);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.println("Digite o elemento da linha [" + (i + 1) + "] da coluna [" + (j + 1) + "]: ");
mat[i][j] = input.nextInt();
System.out.println("");
}
}
}
public void exibirMatriz(){
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print(mat[i][j] + " ");
}
System.out.println("\n");
}
}
public Matriz somar(Matriz matrizParaSomar){
Matriz novaMatriz = new Matriz(m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
novaMatriz.mat[i][j] = this.mat[i][j] + matrizParaSomar.mat[i][j];
}
}
return novaMatriz;
}
/* public void somarEAtribuir(){
}
public Matriz subtrair(){
}
public void subtrairEAtribuir(){
}
public Matriz multiplicar(){
}
public void copiar(){
}
public Matriz obterTransposta(){
}
*/
}
Classe Main
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int m;
int n;
int x;
Scanner input = new Scanner(System.in);
System.out.println("Informe a operação que será realizada\n\n1 - soma de 2 matrizes\n2 - subtração de 2 matrizes\n3 - multiplicação de 2 matrizes\n4 - determina a tranposta de 1 matriz\n5 - sair\n\n");
x = input.nextInt();
if (x == 5){
System.exit(0);
} else if (x == 4){
transposta();
} else if (x == 1) {
soma();
} else if (x == 2) {
subtracao();
} else if (x == 3) {
multiplicacao();
}
}
private static void soma() {
Matriz matriz = lerMatrizDoUsuario(1);
Matriz matrizParaSomar = Matriz.lerMatriz(matriz.getM(), matriz.getN());
Matriz resposta = matriz.somar(matrizParaSomar);
resposta.exibirMatriz();
}
private static void subtracao() {
}
private static void multiplicacao() {
}
private static void transposta() {
}
private static Matriz lerMatrizDoUsuario(int num) {
Scanner input = new Scanner(System.in);
System.out.println("Digite o número de linhas da " + num + "ª Matriz: ");
int m = input.nextInt();
System.out.println("Digite o número de colunas da " + num + "ª Matriz: ");
int n = input.nextInt();
return Matriz.lerMatriz(m, n);
}
}
Abraços…