Soma de valores das colunas de uma matriz

Consigo tomar todos os valores, tanto das linhas quanto das colunas, porém preciso somar os valores de cada coluna. Tentei de varias formas e até agora não obtive sucesso.

da forma que vejo é fazendo dois fors, um dentro do outro.

Passa o que vc fez, q a gente ajuda no que ta errado…

posta o código que fica mais fácil de te ajudar :-o

Bem vindo ao GUJ, André :slight_smile:

Segue umas dicas pra te ajudar a fazer o que quer.

1 - Itere pelas colunas
2 - A cada iteração de coluna, itere por todas as linhas, somando os valores, armazene o valor onde fizer sentido pra você
3 - Pronto :slight_smile:

Se isso não resolver, poste aí o código que você já fez, e a gente vê onde pode te ajudar.

E antes de postar código, por favor leia o nosso How To.
Aí você encontra links para as regras do fórum, e diversas dicas sobre como postar

vote Rodrigo Sasaki para moderador, sempre ajudando os iniciantes a postar da maneira correta :smiley:

Opa :slight_smile:

Se os administradores/moderadores quiserem isso, eu topo!

[code]
package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

public static void main(String[] args) {
    
    int mat[][] = new int[4][3];
    int vet[] = new int[3];
    
    System.out.println("Matriz");
            

    
    for (int i = 0; i < 4; i++){
        System.out.println(" ");
        for (int j = 0; j < 3; j++){
            String valor = JOptionPane.showInputDialog(null, "Informe o valor");
            int v = Integer.parseInt(valor);
            mat[i][j] = v;
            System.out.print(v +" ");
        }
    }                  
   
    int soma = 0;
    
    for (int j = 0; j < 3; j++){
        for (int i = 0; i < 4; i++){
            soma = soma + mat[0][j]; //incompleto
        }  
    }       
    
    
    System.out.println("soma> " +soma);
    
}

}

Pessoal, segue acima o meu código, porém como disse anteriormente, não estou conseguindo somar somente as colunas individualmente.

Faltou fechar a tag code no final :slight_smile:

É a variável soma? se for ela, então tem coisas erradas no seu código.

você não tem que pegar o valor de mat[0][j], pois isso seria fixo, ignorando um dos loops, tem que pegar o valor de mat[i][j].

Agora lembre-se, você vai iterar uma coluna, somar os valores e atribuir à soma só que quando ele iterar a segunda coluna, você perderá o valor antigo.

[quote=andrewdd][code]
package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

public static void main(String[] args) {
    
    int mat[][] = new int[4][3];
    int vet[] = new int[3];
    
    System.out.println("Matriz");
            

    
    for (int i = 0; i < 4; i++){
        System.out.println(" ");
        for (int j = 0; j < 3; j++){
            String valor = JOptionPane.showInputDialog(null, "Informe o valor");
            int v = Integer.parseInt(valor);
            mat[i][j] = v;
            System.out.print(v +" ");
        }
    }                  
   
    int soma = 0;
    
    for (int j = 0; j < 3; j++){
        for (int i = 0; i < 4; i++){
            soma = soma + mat[0][j]; //[u]troca o 0 por i[/u] 
        }  
    }       
    
    
    System.out.println("soma> " +soma);
    
}

}
[/quote][/code] da uma olhada no ultimo comentário e vê se da certo.

import javax.swing.JOptionPane;

public class Teste {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        System.out.println(" ");
        System.out.println(" ");
        int soma;

        for (int j = 0; j < 3; j++) {
            soma = 0;
            
            for (int i = 0; i < 4; i++) {
                soma = soma + mat[i][j];
            }
            
            System.out.printf("Soma da coluna %d: %d\n", j, soma);
        }
    }
}

É isso, se eu fizer dentro do for, toda hora que o loop for executado, o valor irá mudar. Sobre os dois exemplos que me foram mandados, eles estão somando tudo, isso eu consegui fazer, o que eu não consigo é somar somente cada coluna indivualmente :confused:

Você pode fazer a soma ser um array também, com o mesmo tamanho do número de colunas da sua matriz.

Então se você tem 4 colunas, terá 4 totais. Fez sentido ?

O código que eu te mandei soma cada coluna individualmente e faz o print da soma (é só ver no console).

Caso você queira armazenar esse valor num vetor (tipo o que você crio), é só mudar:

import javax.swing.JOptionPane;

public class Aula04Exercício04 {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];
        int vet[] = new int[3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        System.out.println(" ");
        System.out.println(" ");

        int soma;

        // Loop para percorrer as colunas
        for (int j = 0; j < 3; j++) {
            soma = 0;

            // Loop para percorrer as linhas
            for (int i = 0; i < 4; i++) {
                soma = soma + mat[i][j];
            }

            // Print da soma de cada coluna
            System.out.printf("Soma da coluna %d: %d\n", j, soma);
            
            // Armazenamento da soma
            vet[j] = soma;
        }
    }
}

Rpz, com esse ultimo código que foi mandado, ele soma a primeira coluna e mostra o resultado, quando ele vai somar a segunda coluna, ao invés de somar somente ela, o algoritmo esta somando a coloca atual com a anterior.

Pessoal, segue o código abaixo de como eu realmente queria que ele executasse, seguindo a problematização.


package aula.pkg04.exercício.pkg04;

import javax.swing.*;

public class Aula04Exercício04 {

    public static void main(String[] args) {

        int mat[][] = new int[4][3];

        System.out.println("Matriz");

        for (int i = 0; i < 4; i++) {
            System.out.println(" ");
            for (int j = 0; j < 3; j++) {
                String valor = JOptionPane.showInputDialog(null, "Informe o valor");
                int v = Integer.parseInt(valor);
                mat[i][j] = v;
                System.out.print(v + " ");
            }
        }

        int soma[] = new int[3];

        for (int x = 0; x < 3; x++) {
            soma[x] = 0;
        }

        for (int j = 0; j < 3; j++) {
            for (int i = 0; i < 4; i++) {
                soma[j] = soma[j] + mat[i][j];
            }
            JOptionPane.showMessageDialog(null, "A soma da coluna " + (j + 1) +" é " + soma[j]);
        }
    }
}