Somar String

Pessoal eu queria saber como faço para somar string, por exemplo eu tenho um metodo na classeDao que é buscar todos eu gostaria de sabe como faço para somar os valores de um objeto:

public List<Despesa> BuscaTodos() {
        /*
         * Retorna lista de todos os produtos
         */
        List<Despesa> lista = new ArrayList<Despesa>();
        
        int a = 0;
        int b = 0;

        try {
            PreparedStatement stm = this.con.prepareStatement("SELECT * FROM table_despesa");
            ResultSet rs = stm.executeQuery();
            while (rs.next()) {
                Despesa p = new Despesa();
                p.setCodigo(rs.getInt("codigo"));
                p.setDespesa(rs.getString("nome"));
                p.setEstabelecimento(rs.getString("estabelecimento"));
                p.setDatadespesa(rs.getString("datadespesa"));
                p.setMes(rs.getString("mes"));
                p.setValor(rs.getString("valor"));
                p.setFormadepagamento(rs.getString("formadepagamento"));
                p.setCartao(rs.getString("cartao"));
                p.setDatacheque(rs.getString("datacheque"));
                p.setNumerocheque(rs.getString("numerocheque"));
                lista.add(p);
            }
            rs.close();
            stm.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Select Error", JOptionPane.ERROR_MESSAGE);
        }
        return lista;
    }

eu gostaria de saber como faço para somar na propria classe Dao e jogar para um objeto p.setValorSoma() eu fiz assim e nao deu certo:

 b = a + Integer.parseInt(p.getValor()); // aqui é a linha que deu erro.
                p.setSoma(b);

Apareceu este erro:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "215,00"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:458)
	at java.lang.Integer.parseInt(Integer.java:499)
	at br.com.despesa.dao.DespesaDao.BuscaTodos(DespesaDao.java:76)

Como eu poderia fazer?

Amigo boa tarde,

                 O motivo pelo qual o java esta dando é erro é porque o valor que esta tentando somar é um Double, se você usar a classe Double para efetuar o parse, ja resolveria o problema, porem não vejo muito sentido para esse seu código. Pode explicar melhor?

Espero ter ajudado.
Cássio

é que na vdd eu quero somar a coluna do mysql chamada valor, eu gostaria de fazer uma logica para meu codigo em java, mas como sou iniciante estou apanhando pacas.

como faço isto em java, eu consigo pegar os valores e jogar em uma tabela, eu uso Table sera que eu consigo somar a coluna da tabela

Table Model

package br.com.despesa.tablemodels;

import br.com.despesa.beans.Despesa;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;

public class DespesaTableModel extends AbstractTableModel {
    //private String[] colunas = {"Código","Nome","Endereço","Bairro","Cidade","Estado","RG","CPF","Telefone","Celular","Email","Data de Nascimento"};

    //constantes que vão representar as colunas  
    //(só para facilitar o entendimento do código)  
    private final int codigo = 0;
    private final int despesa = 1;
    private final int estabelecimento = 2;
    private final int data = 3;
    private final int mes = 4;
    private final int valor = 5;
    private final int formadepagamento = 6;
    private final int cartao = 7;
    private final int datacheque = 8;
    private final int numerocheque = 9;
    //lista dos produtos que serão exibidos  
    private List<Despesa> produtos;

    public DespesaTableModel() {
        produtos = new ArrayList<Despesa>();
    }

    public DespesaTableModel(java.util.List<br.com.despesa.beans.Despesa> lista) {
        this();
        produtos.addAll(lista);
    }

    public int getRowCount() {
        //cada produto na lista será uma linha  
        return produtos.size();
    }

    public int getColumnCount() {
        //vamos exibir só Nome e Quantidade, então são 2 colunas  
        return 9;
    }

    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna  
        if (column == codigo) {
            return "Código";
        } else if (column == despesa) {
            return "Despesa";
        } else if (column == estabelecimento) {
            return "Estabelecimento";
        } else if (column == data) {
            return "Data da Despesa";
        } else if (column == mes) {
            return "Mês";
        } else if (column == valor) {
            return "Valor da Despesa";
        } else if (column == formadepagamento) {
            return "Forma de Pagamento";
        } else if (column == cartao) {
            return "Cartão";
        } else if (column == datacheque) {
            return "Data do Cheque";
        } else if (column == numerocheque) {
            return "Numero do Cheque";
        }
        return "";
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna  
        if (columnIndex == codigo) {
            return Integer.class;
        } else if (columnIndex == despesa) {
            return String.class;
        } else if (columnIndex == estabelecimento) {
            return String.class;
        } else if (columnIndex == data) {
            return String.class;
        } else if (columnIndex == mes) {
            return String.class;
        } else if (columnIndex == valor) {
            return String.class;
        } else if (columnIndex == formadepagamento) {
            return String.class;
        } else if (columnIndex == cartao) {
            return String.class;
        } else if (columnIndex == datacheque) {
            return String.class;
        } else if (columnIndex == numerocheque) {
            return String.class;
        }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha  
        Despesa p = produtos.get(rowIndex);

        //verifica qual valor deve ser retornado  
        if (columnIndex == codigo) {
            return p.getCodigo();
        } else if (columnIndex == despesa) {
            return p.getDespesa();
        } else if (columnIndex == estabelecimento) {
            return p.getEstabelecimento();
        } else if (columnIndex == data) {
            return p.getDatadespesa();
        } else if (columnIndex == mes) {
            return p.getMes();
        } else if (columnIndex == valor) {
            return p.getValor();
        } else if (columnIndex == formadepagamento) {
            return p.getFormadepagamento();
        } else if (columnIndex == cartao) {
            return p.getCartao();
        } else if (columnIndex == datacheque) {
            return p.getDatacheque();
        } else if (columnIndex == numerocheque) {
            return p.getNumerocheque();
        }
        return "";
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas vão ser editáveis, entao retorna true pra todas  
        return true;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha  
        Despesa p = produtos.get(rowIndex);

        //verifica qual valor vai ser alterado  
        if (columnIndex == codigo) {
            JOptionPane.showMessageDialog(null, "Campo código não pode ser alterado");
        } else if (columnIndex == despesa) {
            p.setDespesa(aValue.toString());
        } else if (columnIndex == estabelecimento) {
            p.setEstabelecimento(aValue.toString());
        } else if (columnIndex == data) {
            p.setDatadespesa(aValue.toString());
        } else if (columnIndex == mes) {
            p.setMes(aValue.toString());
        } else if (columnIndex == valor) {
            p.setValor(aValue.toString());
        } else if (columnIndex == formadepagamento) {
            p.setFormadepagamento(aValue.toString());
        } else if (columnIndex == cartao) {
            p.setCartao(aValue.toString());
        } else if (columnIndex == datacheque) {
            p.setDatacheque(aValue.toString());
        } else if (columnIndex == numerocheque) {
            p.setNumerocheque(aValue.toString());
        }
        //avisa que os dados mudaram  
        fireTableDataChanged();
    }

    //-----------------------------------------------------  
    //Métodos personalizados  
    //-----------------------------------------------------  
    public void inserir(Despesa p) {
        produtos.add(p);

        fireTableDataChanged();
    }

    public void excluir(int pos) {
        produtos.remove(pos);

        fireTableDataChanged();
    }

    public void excluir(Despesa p) {
        produtos.remove(p);

        fireTableDataChanged();
    }

    public void ordenarPorValor() {
        //ordena pelo nome  
        Collections.sort(produtos, new Comparator<Despesa>() {

            @Override
            public int compare(Despesa o1, Despesa o2) {
                return o1.getDatadespesa().compareTo(o2.getDatadespesa());
            }
        });
        //avisa que a tabela foi alterada  
        fireTableDataChanged();
    }

    public void misturar() {
        //mistura a lista  
        Collections.shuffle(produtos);

        //avisa que a tabela foi alterada  
        fireTableDataChanged();
    }

    public Despesa getCliente(int pos) {
        if (pos >= produtos.size()) {
            return null;
        }

        return produtos.get(pos);
    }
}

eu posso adaptar aqui e jogar para um campo na parte View aonde eu visualizo no campo JFSoma???

???

Fala irmão,

O exceção NumberFormatException ocorre quando você tenta fazer o parse a partir de uma String com um formato inválido.
Para fazer o parse para Double, você deverá trocar a "," por "." no valor que está vindo do banco. Seu código deverá ficar da seguinte maneira:

b = a + ((int) Double.parseDouble(p.getValor().replace(',', '.')));
           p.setSoma(b);

Lembrando, que como você está trabalhando com valores, o melhor é usar a classe BigDecimal, pois ela trabalha com pontos flutuantes com uma enorme precisão.

[]'s e bons códigos.

Fala Cara,

          Preparei um código simulando seu problema, você conseguiria resolver assim:
String texto = "120,00";
		Integer a=0;
		Integer b=0;
		
		NumberFormat format = NumberFormat.getInstance(new Locale("pt", "BR"));
		
		try {
			a = b + format.parse(texto).intValue()  ;
			System.out.println(a);
			
		} catch (ParseException e) {
			e.printStackTrace();
		}

A sugestão do colega também funciona, mas não seria uma boa prática. Estou tirando a sua dúvida mas ainda não consegui entender a verdadeira necessidade de efetuar o calculo dessa forma.