Meu arraylist aparentemente não aumenta o seu tamanho ele parece que inicia e zera de novo...?

6 respostas
K

Segue o código:

[color=darkblue]ArrayList clientes = new ArrayList();

ArrayList filmes = new ArrayList();

ArrayList jogos = new ArrayList();[/color][b]

int clientesConstruidos;

int filmesConstruidos;

int jogosConstruidos;

Aqui ele recebe um objeto analisa, e insere o objeto no array.

[b]public void cadastrar(Object a){

if(a instanceof Cliente){

                clientes.add((Cliente) a);
                if(clientes.size()!=0){
                    System.out.println("Size: "+clientes.size());    \\Essa linha eu coloquei apenas pra ver por que o vetor chegava sempre com zero, aqui ele loop size 0 a 1.
                }
            
            }
            else  if(a instanceof Filme){

                filmes.add((Filme)a);

            }

            else
            {
                jogos.add((Jogo)a);
            }
         
   }[/b]

Depois disto criei um botão c/ swing para avançar e voltar um registro deste vetor, porém nunca dava certo.
Coloquei nele apenas um comando de impressão pra imprimir o size deste array e ele só chega com zero, por quê?

6 Respostas

S

cara sou novo em java… mais tem tirar o new qdo vc declara o array

A

Opa, opa, você está instanciando um objeto desta sua classe que você postou parte do código toda vez que clica no botão?
Crie apenas uma instância por programa e referencie ela cada vez que precisar.

ViniGodoy

Só com isso que vc postou não dá pra ter a menor idéia do porque.

K

Galera é o seguinte é como foi dito ai mesmo, encontrei em outro forum uma explicação onde indicava que meu erro era instanciar o arraylist dessa forma sempre eh criada uma nova lista, neste post o cara avisa pra colocar o arraylist como uma variável de instância e de preferência no construtor.
Só que mesmo assim não tô conseguindo fazer pois está em classe diferentes, segue o código:

//Esta eh a classe que faz o arraylist e adiciona os objetos.

[b]package Operações;

import Exceções.<em>;

import Interface.</em>;

import Objeto.*;

import java.util.ArrayList;

public class AcmeVideo implements Cadastrar , Procurar {

public AcmeVideo(){}
ArrayList clientes = new ArrayList();

ArrayList filmes = new ArrayList();

ArrayList jogos = new ArrayList();

int clientesConstruidos;

int filmesConstruidos;

int jogosConstruidos;
public ArrayList<Cliente> getClientes() {
    return clientes;
}

public int getClientesConstruidos() {
    return clientesConstruidos;
}

public ArrayList<Filme> getFilmes() {
    return filmes;
}

public int getFilmesConstruidos() {
    return filmesConstruidos;
}

public ArrayList<Jogo> getJogos() {
    return jogos;
}

public int getJogosConstruidos() {
    return jogosConstruidos;
}

public void setClientes(ArrayList<Cliente> clientes) {
    this.clientes = clientes;
}

public void setClientesConstruidos(int clientesConstruidos) {
    this.clientesConstruidos = clientesConstruidos;
}

public void setFilmes(ArrayList<Filme> filmes) {
    this.filmes = filmes;
}

public void setFilmesConstruidos(int filmesConstruidos) {
    this.filmesConstruidos = filmesConstruidos;
}

public void setJogos(ArrayList<Jogo> jogos) {
    this.jogos = jogos;
}

public void setJogosConstruidos(int jogosConstruidos) {
    this.jogosConstruidos = jogosConstruidos;
}

 public void cadastrar(Object a){
   
         if(a instanceof Cliente){

                clientes.add((Cliente) a);
                if(clientes.size()!=0){
                    System.out.println("oi: "+clientes.size());
                }
            
            }
            else  if(a instanceof Filme){

                filmes.add((Filme)a);

            }
            else
            {
                jogos.add((Jogo)a);
            }
         
   }

       public void procurar(String nome) throws  OpçãoInvalida {

                clientesConstruidos = clientes.size();
                   for(int i = 0; i < clientesConstruidos;i++){
                       if(clientes.get(i).getNome().equalsIgnoreCase(nome)){
                           clientes.get(i);
                           
                         }
           
                   }                  
               
                   filmesConstruidos = filmes.size();
                   for(int i = 0; i < filmesConstruidos;i++){
                       if(filmes.get(i).getTitulo().equalsIgnoreCase(nome)){
                           System.out.println(filmes.get(i).toString());
                          
                       }
              
              }

               
                   jogosConstruidos = jogos.size();
                   for(int i = 0; i < jogosConstruidos;i++){
                       if(jogos.get(i).getTitulo().equalsIgnoreCase(nome)){
                           System.out.println(jogos.get(i).toString());
                       }
                    }
   

             throw new  OpçãoInvalida();

       }

}
[/b][color=blue] [/color]

// Esta é a classe do swing que recebe no text os dados e coloca no objeto que será enviado ao metodo cadastrar, este da classe de cima.

[b]private void buttonCadCliActionPerformed(java.awt.event.ActionEvent evt) {

Executar x=new Executar();

Cliente a=new Cliente();

Endereco b=new Endereco();
int id=a.getIdCliente();
    IDCliente.setText(""+id);
    

    String nome=textNomeCli.getText();
    a.setNome(nome);


    String cpf=textCPF.getText();
    a.setCpf(cpf);


    String rua=textRua.getText();
    b.setRua(rua);


    String bairro=textBairro.getText();
    b.setBairro(bairro);


    String nro=textNro.getText();
    b.setNumero(nro);


    String tel=textTel.getText();
    b.setTelefone(tel);

    x.cadastrar(a);

    System.out.println(x.getClientes().toString()+" "+x.getClientes().size());  //Apenas demostrativo para verificar o tamanho que sempre zera.

}

[/b][color=darkblue] [/color]

K

Pessoal o alexandrehdk tá mais do que certo, eu estava instanciando sempre quando clicava no objeto. Coloquei como uma váriavel global e deu certo fui. Obrigado

ViniGodoy

kiko, quando for postar código, por favor, use as tags code.

seu código aqui
Criado 5 de dezembro de 2009
Ultima resposta 6 de dez. de 2009
Respostas 6
Participantes 4