Duvida em exercicio no bluej

E ai pessoal tou precisando fazer um exercicio mas tou em duvida na hora de testar quando um novo curso é adicionado ao arralyst…

Um curso de uma faculdade é representado por um código, nome, duração (em semestres), valor total do curso e ano de criação do curso . Construa uma classe curso com os seguintes métodos:
• Criação de um curso com todos os dados necessários;
• Criação de um curso sem informar a duração. Neste caso o default são 8 semestres;
• Gets e sets;
• Metódo para calcular o valor da mensalidade de um aluno, considerando que o valor é fíxo, ou seja, o valor total do curso pode ser pago em parcelas mensais.
5)Crie uma classe que represente uma Faculdade. Uma Faculdade tem um nome, ano de criação e um ou mais cursos (represente estes cursos utilizando a classe Curso da questão anterior. Use Arraylist. Crie métodos nesta classe para:
• Criar uma faculdade informando o nome e ano de criação;
• gets e sets;
• Adicionar um Curso (passado como parâmetro) na faculdade. Entretanto, não é possível adicionar um curso já existindo um outro curso com o mesmo nome na Faculdade.
• Remover um Curso dado um nome, passado como parâmetro. Se não houver nenhum curso com o nome fornecido, uma mensagem deve ser impressa na tela informando o fato;
• Retornar uma nova Faculdade (uma nova instância da classe Faculdade) que contenha como cursos, os cursos que foram criados no máximo 5 anos depois da Faculdade. Este método deve receber como parâmetro o nome e o ano de criação da nova faculdade.

esse é o exercicio ai o meu codigo:
public class Faculdade
{
private String nome;
private int anoCriacao;
private Curso[] nomeCurso = new Curso[100];

public Faculdade (String nome, int anoCriacao){
    this.nome = nome;
    this.anoCriacao = anoCriacao;
}

public void adicionaCurso (Curso novo){
    int cont;
    
    for (cont=0; cont<=100; cont++){
       
        if (nomeCurso[cont] == null ){
            nomeCurso[cont] = novo;
            break;
            }
            
            
       
        }
    }
    


public void removeCurso (String nom){
    int cont;
    for (cont=0;cont<100;cont++){
        if (nomeCurso[cont] != null){   
            if (nomeCurso[cont].checaCurso(nom) == true){
                nomeCurso[cont] = null;
                break;
                
                
            }
            else
            if (nomeCurso[cont].checaCurso(nom) == false){
                System.out.println("não tem esse curso cadastrado");
            }
            
            
            
            
        }
        
    }
    
}

public void setnome( String novoNome){
    this.nome = nome;
}   

public String getnome (){
    return this.nome;
}

public void setanoCriacao (int novoAno){
    this.anoCriacao = anoCriacao;
}

public int getanoCriacao(){
    return this.anoCriacao;
}

}

O seu exercício pede para utilizar Arraylist, mas você está utilizando Arrays:

Para trabalhar com Arraylist você precisar alterar para(uma das formas):
private List<Curso> nomeCurso = new ArrayList<>(100);

1 curtida

Com relação a sua dúvida de como fazer os testes na hora de adicionar um novo curso…

Depois que vc fizer a modificação que o @brunoandrade.dev apresentou, seu método adcionaCurso ficaria mais ou menos assim:

void adicionaCurso(Curso novo) {
    boolean naoExiste = true;
    
    for(int i = 0; i < nomeCurso.size(); i++) {
        if (nomeCurso.get(i).getNome().equals(novo.getNome())) {
            naoExiste = false;
            break;
        }
    }

    if (naoExiste) nomeCurso.add(novo);
}

No caso vc vai percorrer toda a sua lista de cursos verificando se um curso com o mesmo nome já existe, se não existir, vc adiciona o novo curso à lista.