Valor de arraylist em um if e else

3 respostas
javaarraylistifelse
L

Estou tentando limitar os estudantes da classe Disciplina em 50 com uma ArrayList e uma condição, mas talvez elas estejam em lugares errados ou é algo muito simples que não consigo enxergar.

Como faço pra dizer: se a quantidade de estudantes for > 50 então mostrar : “Sala lotada”?

Porque basicamente um objeto disciplina pode ter no máximo 50 estudantes.

import java.util.ArrayList;

class Main {
  public static void main(String[] args) {

   
   
   Estudante e1 = new Estudante();
    e1.nome = "Juan da Silva";
    e1.nmatricula = "420.666";
    e1.ano= "2017";
    e1.idade= "15";

  Professor p1 = new Professor();
   p1.nome = "Kira Yagami";
   p1.ano = "2017";
   p1.especialidade = "Tecnologia da Informação";
   
    Disciplina d1 = new Disciplina();
    d1.professor = p1;
    
    d1.estudantes.add(e1);
  
  if(this.estudantes.size()>50){
		  	System.out.println("Sala lotada. Mais de 50 alunos!");
        }
      else{
		  System.out.println("Sala com menos de 50 alunos!");
		}
		
}
}


class Estudante{
  String nome;
  String nmatricula;
  String ano;
  String idade;
}
class Professor{
  String nome;
  String ano;
  String especialidade;
}
class Disciplina{
  Professor professor;
  ArrayList<Estudante> estudantes;
  
  public Disciplina(){
    this.estudantes = new ArrayList<Estudante>();
    }
  
  public void quantidadeDeEstudante(){
    for(int i =0;i<this.estudantes.size();i++){
    }
  }
}

Eu sei que o erro esta na parte:

if(this.estudantes.size()>50){

pois esta dizendo que a função q eu fiz n existe. Como arrumo isso?

3 Respostas

W

Class Main {
public static void main(String[] args) {

boolean salaLotada = false;

while (!salaLotada) {

// ler dados dos estudantes

salaLotada = !d1.adicionarEstudante(e1);

}

}

}

Class Disciplina {
private static int LIMITE_ALUNOS = 50;

public boolean adicionarEstudante (Estudante novoEstudante){

if (this.estudantes.size() < LIMITE_ALUNOS) {

this.estudantes.add(novoEstudante);

return true;

} //if

return false;	

}//métido

}//classe
L

Antes de tudo obrigado pela resposta.
Bem, quando coloquei na classe disciplina isso que você sugeriu:

public boolean adicionarEstudante (Estudante novoEstudante){
if (this.estudantes.size() < LIMITE_ALUNOS) {
this.estudantes.add(novoEstudante);
return true;
}
return false;	
}

Ocorreu o mesmo erro de antes de estar dizendo que “this.estudantes.size” n existe:

error: cannot find symbol

if (this.estudantes.size() < LIMITE_ALUNOS) {

^

symbol: variable estudantes

error: cannot find symbol

this.estudantes.add(novoEstudante);

^

symbol: variable estudantes
W

Cara, vou postar o código; não é muito bom, todavia, você recebê-lo por completo, uma vez que você já fez quase tudo dele. Lembrando: o bom é pegar as dicas e ir aprimorando seu raciocínio lógico.

Pense nisso!

Seque o código:

import java.util.ArrayList;

public class Main {
  
  public static void main(String[] args) {
     
   Estudante e1 = new Estudante();
    e1.nome = "Juan da Silva";
    e1.nmatricula = "420.666";
    e1.ano= "2017";
    e1.idade= "15";

  Professor p1 = new Professor();
   p1.nome = "Kira Yagami";
   p1.ano = "2017";
   p1.especialidade = "Tecnologia da Informação";
   
    Disciplina d1 = new Disciplina();
    d1.professor = p1;
    
    boolean salaLotada = false;

	while (!salaLotada) {
		// ler dados dos estudantes
		salaLotada = !d1.adicionarEstudante(e1);
      	e1 = new Estudante();
    	e1.nome = "Juan da Silva II";
    	e1.nmatricula = "420.666";
    	e1.ano= "2017";
    	e1.idade= "15";
	}
  
    for (int i = 0; i < d1.estudantes.size(); i++) {
      System.out.println(d1.estudantes.get(i).nome);
    }
}
}


class Estudante{
  String nome;
  String nmatricula;
  String ano;
  String idade;
}
class Professor{
  String nome;
  String ano;
  String especialidade;
}
class Disciplina{
  Professor professor;
  ArrayList<Estudante> estudantes;
  private static int LIMITE_ALUNOS = 2;
  
  public Disciplina(){
    this.estudantes = new ArrayList<Estudante>();
    }
  
  public boolean adicionarEstudante (Estudante novoEstudante){
	if (this.estudantes.size() < LIMITE_ALUNOS) {
		this.estudantes.add(novoEstudante);
		return true;
	}
	return false;	
 }
  
  public void quantidadeDeEstudante(){
    for(int i =0;i<this.estudantes.size();i++){
    }
  }
}
Criado 23 de setembro de 2017
Ultima resposta 23 de set. de 2017
Respostas 3
Participantes 2