Somar colunas jtable e retornar resultado na coluna

Estou tentando somar o valor de três colunas e volta o resultado na quarta coluna, mas não estou conseguindo

for (int i = 0; i < jTable1.getRowCount(); i++) {
    int severidade = Integer.parseInt(jTable1.getValueAt(i, 7).toString());
    int ocorrencia = Integer.parseInt(jTable1.getValueAt(i, 12).toString());
    int deteccao = Integer.parseInt(jTable1.getValueAt(i, 14).toString());
    int resultrpn = Integer.parseInt(jTable1.getValueAt(i, 15).toString());
    severidade*=ocorrencia*=deteccao;

}

alguém pode ajudar?

Você tem que pegar o valores de acordo com a coluna e depois fazer uma setValueat na utlima coluna

   for (int row = 0; row < jTable1.getRowCount(); row++) {
          int severidade = Integer.valueOf(calculoTableModel.getValueAt(row, 0).toString());
          int ocorrencia = Integer.valueOf(calculoTableModel.getValueAt(row, 1).toString());
          int deteccao = Integer.valueOf(calculoTableModel.getValueAt(row, 2).toString());
   
          jTable1.setValueAt(severidade+ocorrencia+deteccao, row, 3);
    }

Entendi jacob, obrigado por me explicar!

só estou com um problema jacob, caso uma linha esteja em branco e a próxima esteja com valor, ele não está somando.

Tem que fazer uma verificação antes e inicializar cada variavel, tipo:

int severidade=0;
if(calculoTableModel.getValueAt(row, 0)!=null&&calculoTableModel.getValueAt(row, 0).toString()!=""){
 severidade = Integer.valueOf(jTable1.getValueAt(row, 0).toString());
}

Dessa maneira jacob?

   int severidade = 0;
    int ocorrencia = 0;
    int deteccao = 0;
    for (int row = 0; row < jTable1.getRowCount(); row++) {

        if (jTable1.getValueAt(row, 0) != null && jTable1.getValueAt(row, 0).toString() != "") {
            severidade = Integer.valueOf(jTable1.getValueAt(row, 7).toString());
            ocorrencia = Integer.valueOf(jTable1.getValueAt(row, 12).toString());
            deteccao = Integer.valueOf(jTable1.getValueAt(row, 14).toString());
            jTable1.setValueAt(severidade * ocorrencia * deteccao, row, 15);
        }
    }

Você implementou seu próprio TableModel?
Se implementou, posta o fonte.
Se não implementou, sugiro implementar.

Com um TableModel adequadamente implementado esse laço for aí em cima se torna desnecessário.

Exemplo:

1 - Uma classe pra representar cada objeto da linha da JTable:

public class Objeto {

    private int severidade;
    private int ocorrencia;
    private int deteccao;
    
    public int getSeveridade() {
        return severidade;
    }

    public void setSeveridade(int severidade) {
        this.severidade = severidade;
    }

    public int getOcorrencia() {
        return ocorrencia;
    }

    public void setOcorrencia(int ocorrencia) {
        this.ocorrencia = ocorrencia;
    }

    public int getDeteccao() {
        return deteccao;
    }

    public void setDeteccao(int deteccao) {
        this.deteccao = deteccao;
    }
    
    public int getResultado() {
        return severidade + ocorrencia + deteccao;
    }
}

2 - Uma tela pra apresentar a JTable com os objetos:

import java.awt.BorderLayout;
import java.awt.Container;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.AbstractTableModel;

@SuppressWarnings("serial")
public class Exemplo extends JFrame {

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            Exemplo janela = new Exemplo();
            janela.setDefaultCloseOperation(EXIT_ON_CLOSE);
            janela.setLocationRelativeTo(null);
            janela.setVisible(true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    private class MeuTableModel extends AbstractTableModel {

        private String[] colunas = new String[] { "SEVERIDADE", "OCORRENCIA", "DETECCAO", "RESULTADO" };

        // a JTable chama este método para saber quantas colunas ela possui
        @Override
        public int getColumnCount() {
            return colunas.length;
        }

        // a JTable chama este método para saber o nome de cada coluna
        @Override
        public String getColumnName(int col) {
            return colunas[col];
        }

        // a JTable chama este método para saber quantas linhas ela possui
        @Override
        public int getRowCount() {
            return listaDeObjetos.size();
        }

        // a JTable chama este método para saber se a célula informada é editável ou não
        @Override
        public boolean isCellEditable(int row, int col) {
            return col != 3;
        }

        // a JTable chama este método quando a célula informada é editada
        @Override
        public void setValueAt(Object value, int row, int col) {
            if (row < listaDeObjetos.size()) {
                Objeto objeto = listaDeObjetos.get(row);
                int valorInteiro = Integer.parseInt((String) value);
                switch (col) {
                    case 0:// SEVERIDADE
                        objeto.setSeveridade(valorInteiro);
                        break;
                    case 1:// OCORRENCIA
                        objeto.setOcorrencia(valorInteiro);
                        break;
                    case 2:// DETECCAO
                        objeto.setDeteccao(valorInteiro);
                        break;
                }
                fireTableDataChanged();
            }
        }

        // a JTable chama este método para apresentar o valor da célula informada
        @Override
        public Object getValueAt(int row, int col) {
            if (row < listaDeObjetos.size()) {
                Objeto objeto = listaDeObjetos.get(row);
                switch (col) {
                    case 0:// SEVERIDADE
                        return objeto.getSeveridade();
                    case 1:// OCORRENCIA
                        return objeto.getOcorrencia();
                    case 2:// DETECCAO
                        return objeto.getDeteccao();
                    case 3:// RESULTADO
                        return objeto.getResultado();
                }
            }
            return null;
        }
    }

    private MeuTableModel meuTableModel;
    private List<Objeto> listaDeObjetos;

    public Exemplo() {
        super("Exemplo");

        listaDeObjetos = criarListaDeObjetos();

        meuTableModel = new MeuTableModel();
        JTable table = new JTable(meuTableModel);
        JScrollPane scrollPane = new JScrollPane(table);

        Container contents = getContentPane();
        contents.setLayout(new BorderLayout());
        contents.add(scrollPane, BorderLayout.CENTER);

        setSize(640, 480);
    }

    private List<Objeto> criarListaDeObjetos() {
        List<Objeto> objetos = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 100000; i++) {
            Objeto objeto = new Objeto();
            objeto.setSeveridade(random.nextInt(100));
            objeto.setOcorrencia(random.nextInt(100));
            objeto.setDeteccao(random.nextInt(100));
            objetos.add(objeto);
        }
        return objetos;
    }
}

Assim oh:

for (int row = 0; row < jTable1.getRowCount(); row++) {
int severidade = 0;
int ocorrencia = 0;
int deteccao = 0;

    if (jTable1.getValueAt(row, 7) != null && jTable1.getValueAt(row, 7).toString() != "") {
        severidade = Integer.valueOf(jTable1.getValueAt(row, 7).toString());                
    }
    
   if (jTable1.getValueAt(row, 12) != null && jTable1.getValueAt(row, 12).toString() != "") {
        ocorrencia = Integer.valueOf(jTable1.getValueAt(row, 12).toString());
   }

    if (jTable1.getValueAt(row, 14) != null && jTable1.getValueAt(row, 14).toString() != "") {
        deteccao = Integer.valueOf(jTable1.getValueAt(row, 14).toString());
    }
        jTable1.setValueAt(severidade * ocorrencia * deteccao, row, 15);
   
}

O único problema é que vai zerar caso algum for nulo/em branco

Bom dia Staroski, Eu comecei fazer meu model, mas acabei me perdendo um pouco por ser 24 colunas… Ficou um pouco complicado pq eu nunca tinha feito um. Mas obrigado pela dica e sim, realmente ficaria muito bom. Vou tentar da mais uma mexida no meu model pra tenta implementar oq você me disse.

Bom dia Jacob tudo bom? Cara eu tinha feito dessa maneira, mas pensei q não era a correta por ter dado 0 nas colunas que n tinham conteudo. e como eu estou puxando 100 linhas nessa jtable, fica complicado. você saberia me informar se é possível não retornar os 0?

tu podia fazer assim ao invés de iniciar com 0 inicializava com 1

for (int row = 0; row < jTable1.getRowCount(); row++) {
 int severidade = 1;
 int ocorrencia = 1;
 int deteccao = 1;

 if (jTable1.getValueAt(row, 7) != null && jTable1.getValueAt(row, 7).toString() != "") {
    severidade = Integer.valueOf(jTable1.getValueAt(row, 7).toString());                
 }

  if (jTable1.getValueAt(row, 12) != null && jTable1.getValueAt(row, 12).toString() != "") {
    ocorrencia = Integer.valueOf(jTable1.getValueAt(row, 12).toString());
 }

 if (jTable1.getValueAt(row, 14) != null && jTable1.getValueAt(row, 14).toString() != "") {
    deteccao = Integer.valueOf(jTable1.getValueAt(row, 14).toString());
 }
    jTable1.setValueAt(severidade * ocorrencia * deteccao, row, 15);

}

Dai na hora da multiplicação ele não zera só considera os valores que não são nulos na hora da multiplicação. Não sei se era isso que você estava se referindo

pior q não, eu precisava q fosse c null jacob

mas talvez da maneira c 0 seja util. eu preciso agora é descobri uma forma em que essas colunas fosse alterada ja multiplicava automaticamente