Matriz 3x3 somar as linhas e colunas

01 - Escreva um programa que permita ao usuário preencher uma matriz de dimensões 3x3 e imprima na tela a matriz e a soma dos elementos de cada linha e de cada coluna.

Alguem pode me ajudar.

import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner end= new Scanner (System.in);
int linhas=0, colunas=0;
int somar;

       int[] [] mat= new int[linhas] [colunas];
       
    System.out.println("----------SOMA DAS MATRIZ--------");
      for(int i = 0; i < 3; i++){
	System.out.println("Informe o valor das linhas:");
	linhas=end.nextInt();
	
	System.out.println("Informe o valor das colunas:");
	colunas=end.nextInt();
      }
	   
	for (int i = 0; i< linhas; i++){
	       for (int c = 0 ; c < colunas ; c++){
	           
	           linhas = i +mat[i][c];
	           colunas= i+ mat[i] [c];
	           
	       }
	       System.out.println("A soma da coluna da matriz é" +colunas);
	       System.out.println("A soma da linha da matriz é:" +linhas);
	}
	
}

}

Aqui você criou uma matriz com zero linhas e zero colunas. Mas o enunciado já disse que é 3x3, então inicialize os tamanhos com os valores corretos:

int linhas = 3, colunas = 3;
int[][] mat = new int[linhas][colunas];

Depois você tem que fazer o loop para ler a matriz, algo assim:

Scanner sc = new Scanner(System.in);
for (int i = 0; i < linhas; i++) {
    for (int j = 0; j < colunas; j++) {
        System.out.printf("Digite o número da posição [%d, %d]:\n", i, j);
        mat[i][j] = sc.nextInt();
    }
}

Já para calcular as somas, você precisa de 3 somas para as linhas (afinal, são 3 linhas), e mais 3 somas para as colunas. Ou seja, são 2 arrays:

int[] somaLinhas = new int[linhas];
int[] somaColunas = new int[colunas];

Em somaLinhas[0] ficará a soma da linha zero, em somaLinhas[1], a soma da linha 1, e assim por diante. O mesmo vale para as somas das colunas.

E podemos calcular essas somas no mesmo loop que lê os números. Depois é só imprimir os resultados:

int linhas = 3, colunas = 3; // tamanhos
int[][] mat = new int[linhas][colunas]; // matriz com os tamanhos corretos
// soma das linhas e colunas (já são inicializados com zeros)
int[] somaLinhas = new int[linhas];
int[] somaColunas = new int[colunas];

// lê a matriz e já vai atualizando as somas
Scanner sc = new Scanner(System.in);
for (int linha = 0; linha < linhas; linha++) {
    for (int coluna = 0; coluna < colunas; coluna++) {
        System.out.printf("Digite o número da posição [%d, %d]:\n", linha, coluna);
        int valor = sc.nextInt();
        // guarda o valor na matriz
        mat[linha][coluna] = valor;
        // atualiza a soma da linha e coluna
        somaLinhas[linha] += valor;
        somaColunas[coluna] += valor;
    }
}

// imprimir a matriz
for (int[] linha : mat) {
    for (int valor : linha) {
        // imprime o número alinhado à direita, ocupando 3 espaços (para ficarem alinhados)
        System.out.printf("%3d", valor);
    }
    System.out.println();
}
// imprimir as somas
for (int i = 0; i < linhas; i++) {
    System.out.printf("Soma da linha %d = %d\n", i, somaLinhas[i]);
}
for (int i = 0; i < colunas; i++) {
    System.out.printf("Soma da coluna %d = %d\n", i, somaColunas[i]);
}

Para imprimir a matriz usei o enhanced for, pois ali não me interessa os índices, somente os valores. Já para as somas, usei o for “normal” para indicar o número da linha e coluna.

2 curtidas