Jump to content

Recommended Posts

Posted

Oi ppl;

Estou a resolver uma ficha que me está a dar cabo dos miolos 🙂

Tenho este código:

import java.util.ArrayList;
import java.util.Iterator;
/**
* Classe para a gestão de alunos inscritos numa turma

*/
public class Turma
{
   private ArrayList<Aluno> alunos; // Lista de alunos
   private String aluno;
   private int nAluno;
   /**
 * Devolve o aluno com o número de aluno indicado
 *
 * @param  numAluno   número do aluno
 * @return		    Aluno como o número numAluno ou valor null caso não exista na lista de alunos
 */
   public Aluno getAluno(int numAluno)
   {
   for(int i=0; i<=alunos.size(); i++)
   {
	   if(alunos.size()==numAluno)
	   {
		   System.out.println(aluno);
	   }
   }
   return null;
   }

   /**
 * Método acrescenta um aluno à lista, tendo em conta que não
 * é adicionado um aluno com número já existente.
 * O método retorna true se o aluno for acrescentado ou false nos outros casos
 *
 * @param  aluno   aluno a acrescentar
 * @return   True se aluno foi acrescentado
 */
   public boolean addAluno(Aluno aluno)
   {

    for(int i=0; i<=alunos.size(); i++)
    {
	    //Para comparar strings usa-se o "equals"
	    if(!aluno.equals(alunos.get(i)))
	    {
		    alunos.add(aluno);
		    return true;
	    }
    }
    return false;
   }

   /**
 * Lista os alunos da turma (nome e número)
 */
   public void listaAlunos()
   {
    System.out.printf("\nPercorrendo o ArrayList (usando iterator)\n");
    int i = 0;
    Iterator<Aluno> iterator = alunos.iterator();
    while (iterator.hasNext())
    {
	    System.out.printf("Posição %d- %s\n", i, iterator.next());
	    i++;
    }
   }
}

Sempre que uso o método

public Aluno getAluno

e

public void listaAlunos()

Dá-me um erro de

java.lang.NullPointerException

at Turma.getAluno(Turma.java:24)

e no outro método

java.lang.NullPointerException

at Turma.listaAlunos(Turma.java:65)

Alguém consegue explicar-me o porquê?

Obrigado

gmc11

 

Posted

Esta parte já está resolvida...esqueci-me de pôr

 public Turma()
   {
    alunos = new ArrayList<Aluno>();
   }

Agora tenho uma dúvida de principiante nesta parte.

Neste método

public boolean addAluno(Aluno aluno)
   {

    for(int i=0; i<=alunos.size(); i++)
    {
	    //Para comparar strings usa-se o "equals"
	    if(!aluno.equals(alunos.get(i)))
	    {
		    alunos.add(aluno);
		    return true;
	    }
    }
    return false;
   }

O que devo pôr é o quê? Se ponho String dá erro, se ponho int também não dá.

Alguma dica?

Cumps

gmc11

 

Posted

Oi HHH

Obrigado pelas tuas respostas:

Tenho de fazer isso

/**

* Método acrescenta um aluno à lista, tendo em conta que não

* é adicionado um aluno com número já existente.

* O método retorna true se o aluno for acrescentado ou false nos outros casos

*

* @param aluno aluno a acrescentar

* @return True se aluno foi acrescentado

*/

Ou seja, pelo que entendi tenho um parâmetro e tenho de verificar no arraylist se existe, se ponho "Carlos" no parâmetro, vai percorrer a list e veriifcar se existe, se existir não adiciona, se existir não.

Está errado?

gmc11

 

Posted

Está errado?

sim está

1º - o enunciado pede para que não se insira com o mesmo número e estas a pensar comparar "Carlos" (um string)

2º - no código que apresentas, estás a usar a função equals sobre o objecto Aluno, logo nem estás a comparar strings ou números (isto supondo que não redefiniste a função equals)

3º - se é para verificar a existẽncia de um elemento na lista, usa a função indexOf

IRC : sim, é algo que ainda existe >> #p@p
Posted

OI HHH

Tens razão, nem li isso direito.

Para fazer isso preciso de ir buscar a outra classe Aluno...


public class Aluno
{
   private int id; // Nº do aluno (identificador único)
   private String nome; // Nome do aluno
   /**
 * Construtor dos objectos da classe Aluno
 */
   public Aluno(String nome, int ID)
   {
    this.nome=nome;
    this.id=ID;
   }
   public String getNome()
   {
    return nome;
   }


   /**
 * Definir métodos de acesso e de mutação para os campos,
 * considerando que o nº de aluo não pode ser alterado
 * getID, getNome, setNome
 */
}

Só depois posso usar o resto então.

Ou seja, tenho de chamar a Classe Aluno dentro do método boolean para ler os valores existentes

Certo ou nem por isso? 🙂

gmc11

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.