Lógica de Array

4 respostas
netbeans
Maycondqs

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.

4 Respostas

S

@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:

Maycondqs

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.

S

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

S

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

Criado 26 de janeiro de 2019
Ultima resposta 28 de jan. de 2019
Respostas 4
Participantes 2