ArrayList - Acesso através da Main - Help!

8 respostas
J

Bom, meu problema é o seguinte…

Tenha uma classe Jogo e nela criei um ArrayList.
Tenho dois métodos nela, inserir e excluir.

Eu insiro blz, chamando o método pela classe main e passando os dados que quero inserir.

Mas quando vou excluir alguma posição desse ArrayList chamando o método excluir pela classe Main é como se o ArrayList estivesse vazio.

Não sei se fui claro…

Alguém tem idéia do que pode ser?

8 Respostas

Andre_Fonseca

coloca o código da declaração do ArrayList e do Main entre as tags <<code>>

[]´s

berg.pb

Cara, se talvez vc postar o código, fique mais fácil de entender, blz?!
Abraços

DirceuSobrinho

será q o ArrayList não é uma variavel local, ai qdo vc chama o metodo remover ai o array tá vazio!

tem como vc posta o codigo nao? fica melhora te ajudarem!

jgandolfi

Passa o código para vermos, porém pode ser que você tenha criado a variável no método tenta criar a variável como de classe e não esqueça que deve ser estática já que é usado pelo man.

J
public class Professor extends Academico {
          
    ArrayList professores = new ArrayList();  
    EstruturaProfessor objProf;

     public void cadastrarProfessor(EstruturaProfessor dados)
    {             
        professores.add(dados);                       
    }
 
    public void excluirProfessor(String nomeExcluir)
    {             
        for (int j = 0; j < professores.size(); j++)
        {                        
            objProf = (EstruturaProfessor) professores.get(j);
            
            if (objProf.nome.equals(nomeExcluir))            
                professores.remove(objProf);            
                         
        }        
    }


public class Main {   

    public static void main(String[] args) {

    while (opcao != 0)
        {            
            System.out.println("1. Cadastrar Professor");
            System.out.println("2. Excluir Professor");           
            System.out.println("0. Sair");            
            
            System.out.println("Digite a opcao desejada: ");    
            opcao = leOpcao.nextInt();
            
            switch (opcao)
            {
                case 1:
                    cadastraProf();
                    break;
                
                case 2:
                    excluirProf();
                    break;               
                
              }
        }
    }
    

    public static void cadastraProf()
    {
        Scanner prof = new Scanner(System.in);                
        EstruturaProfessor ep = new EstruturaProfessor();   

        Professor profDados = new Professor(" ", 0 , " ", " ", " ");
      
        System.out.println("Digite o nome do professor: ");
        profDados.setNome(prof.nextLine());         
        ep.nome = profDados.getNome();
                
        System.out.println("Digite o registro universitário do professor: ");     
        profDados.setRU(prof.nextLine());
        ep.ru = profDados.getRU();                     
        
        profDados.cadastrarProfessor(ep);  
    }


   public static void excluirProf()
    {
        String nomeExcluir;
        Scanner profExcluir = new Scanner(System.in);
        Professor pe = new Professor(" ", 0 , " ", " ", " ");
        
        System.out.println("Digite o nome do professor a ser excluído: ");
        nomeExcluir = profExcluir.nextLine();
        pe.excluirProfessor(nomeExcluir); 
    }

}

DEI UMA SIMPLIFICADA NO CÓDIGO PQ TÁ COM MUITA COISA.... MAS O BÁSICO DO PROBLEMA TÁ AE...

CRIO UM ARRAYLIST NA CLASSE PROFESSOR. ATRAVÉS DA MAIN EU INSIRO OS DADOS, MAS QUANDO VOU TENTAR EXCLUIR PELA MAIN, O ARRAY PARECE ESTAR VAZIO.

VALEU GALERA

B

Simples, você não está mantendo o objeto professor instanciado, ele só está existindo dentro do escopo dos métodos cadastraProf e excluirProf quando ele deveria existir fora deles, e esses métodos só usarem o objeto.

J

Valeuuuuu, era isso mesmo…

Coisas de iniciante

Valeuuuu

J

Putz, agora fui testar direito...

Deu problema no cadastrar.... Mesmo instanciando o objeto professor uma vez só na classe Main, a cada vez que eu chamo o método cadastrar na Main parece que o Array de professores é iniciado.

Tá assim:

Na classe Main:
.
.
.

static EstruturaProfessor ep = new EstruturaProfessor();
static Professor objProf = new Professor(" ", 0 , " ", " ", " "); 
static Scanner scanProf = new Scanner(System.in);
static String nomeExcluir;

public static void cadastraProf()
    {                                    
        System.out.println("Digite o nome do professor: ");
        objProf.setNome(scanProf.nextLine());         
        ep.nome = objProf.getNome();
                
        System.out.println("Digite o registro universitário do professor: ");     
        objProf.setRU(scanProf.nextLine());
        ep.ru = objProf.getRU();
                     
        
        objProf.cadastrarProfessor(ep);        
    }

public static void excluirProf()
    {               
        System.out.println("Digite o nome do professor a ser excluído: ");
        nomeExcluir = scanProf.nextLine();
        objProf.excluirProfessor(nomeExcluir); 
    }

Na classe Professor:

final int tamanhoArray = 2;
public EstruturaProfessor professores[] = new EstruturaProfessor[tamanhoArray];  
public EstruturaProfessor objProf; 
int i = 0;
.
.
.

public void cadastrarProfessor(EstruturaProfessor dados)
    {            
        if (i < tamanhoArray)
        {           
            professores[i] = dados;
            i++;
        }                                            
    }       
    
    public void excluirProfessor(String nomeExcluir)
    {           
        for (int j = 0; j < i; j++ )
        {                                    
            objProf = professores[j];                     
            System.out.printf("AAAA-->>> %s \n", objProf.nome);
            
            if (objProf.nome.equals(nomeExcluir))
            {
                professores[j] = null;
                System.out.println("Professor EXCLUÍDO");
            }            
            else            
                System.out.printf("Professor na lista: %s ", objProf.nome);
              
        }        
    }
Criado 29 de maio de 2008
Ultima resposta 30 de mai. de 2008
Respostas 8
Participantes 6