Lógica de Array

Então, estou montando um sistema de cadastro de produtos e vendas. E a dúvida é quanto a como fazer para que quando eu clicar em adicionar item ( na parte de vendas, no caso no carrinho ) varrer cada linha e quando repetir o item ele somar apenas a quantidade que estou adicionando do produto ao que já existe. Imagino que teria que usar um For para percorrer as linhas mas não sei como fazê-lo neste caso direito. O código que uso para adicionar o item com o botão:

private void adicionar() {

    if (jtfQuantidade.getText().equals("")) {
        JOptionPane.showMessageDialog(this, "Você deve preencher todos os campos!", "Atenção", JOptionPane.WARNING_MESSAGE);
    } else {
        modelProdutos = controllerProdutos.retornarProdutoController(Integer.parseInt(jtfCodigoProduto.getText()));
        //adicionar uma linha na tabela
        DefaultTableModel modelo = (DefaultTableModel) jtbVendas.getModel();
        int cont = 0;
        double quantidade = 0;
        quantidade = Double.parseDouble(jtfQuantidade.getText());
        for (int i = 0; i < cont; i++) {
            modelo.setNumRows(0);
        }
        modelo.addRow(new Object[]{
            modelProdutos.getIdProduto(),
            modelProdutos.getProNome(),
            jtfQuantidade.getText(),
            modelProdutos.getProValor(),
            quantidade * modelProdutos.getProValor()

        });
        somarValorTotalProdutos();
        aplicarDescontos();
        limpaQuantidade();

    } 
}

O código repete os itens várias vezes. No caso escolho o item: Pendrive - 2 und. Ele adiciona na jtable, ae o cliente esqueceu que precisava de 3 e não dois, ae ele cria outra linha com o nome do produto e 1 und. Eu gostaria de saber como fazer para que ele adicione esta und ao valor que já está na coluna.

@Maycondqs eu acho que a maneira mais fácil de fazer isso é com o “for” sim. No caso tenta fazer um sistema para verificar se tem um produto igual a algum produto da lista que vc vai adicionar, para a lista que vc já tem guardado. Após isso, se NÃO houver um produto igual, ele adiciona um novo, com uma unidade, se houver, ele varre o arraylist que vc tem os produtos (ou DefaultTable, mas eu recomendo array) e modifica para a quantidade de unidades que está mostrando na tela, +1 certo?

poderia ser algo parecido com isso:

… //parte antes de adicionar na tabela

//ProdutosAdicionar é a lista de produtos que vc vai adicionar ao carrinho
//ArrayFinal é a lista final de produtos, a que fica guardada

for(int c=0;c<=ArrayProdutos.size()-1;c++){

  if(ArrayProdutos.indexOf() == -1){
  //Se o programa detectar que não tem um produto igual, ele adiciona normalmente
       ArrayFinal.add(SeuProduto);

   }else{
    //Se HOUVER um produto igual, ou seja, o indexof vai ser diferente de -1, ele precisa procurar na lista toda pra substituir certo?

    //para facilitar, é mais fácil usar o próprio IndexOf para saber em qual posição ele está

    ArrayFinal.set(ArrayFinal.indexOf(ArrayProdutos.get(c)),  NOVO PRODUTO COM A NOVA QUANTIDADE DE UNIDADE  );

}

}

me avisa aí se deu certo :slight_smile:

Ainda não sei muita coisa… Eu tentei aqui mas não deu, do jeito que julguei certo kkkk Mas acho que eu não entendi muito bem como usar.

vc substituiu o que eu coloquei né?? no caso o “ArrayFinal” pela sua lista principal (aquela que vc vai pagar só no final) e o "ArrayProdutos’’ pela lista que vc vai adicionar.

haam, aparentemente o GUJ decidiu não colocar a programação que eu mandei inteira, no inicio, antes do

if(ArrayProdutos.indexof==-1)

coloca:

for(int c=0;c<=ArrayProdutos.size()-1;c++){

e depois fecha no final

vc ta usando ArrayList pra fazer isso ne? pq se vc tentar fazer direto pelo TableModel talvez dê mais trabalho. No caso, ficou faltando só vc substituir o “NOVO PRODUTO COM A NOVA QUALIDADE” pelo produto que vc vai adicionar, provavelmente vc vai ter que dar um jeito de pegar o produto anterior (o que vc já tinha na ArrayFinal), depois ver quantas unidades ele tem; e por fim substituir pela quantidade que vc vai adicionar. (é necessário fazer esse sistema, mas no caso eu nn tenho como ajudar, já que nn sei a programação inteira xD )

@Maycondqs