Erro

preciso criar uma clase Aluno e uma Cadastro. Nesta ultima, devo chamar a classe Aluno e imprimir 3 listas, uma de aprovados (nota >=5), uma de emRecuperação ( 3<=nota<5) e outra de reprovados (nota <3).
O que está errado no meu código?

[code]class Aluno
{
private int nroUSP;
private String nome;
private double notaFinal;

public Aluno ( int nroUSP, String nome, double notaFinal)
{
this.nroUSP = nroUSP;
this.nome = nome;
this.notaFinal = notaFinal;
}

void setnroUSP ( int nroUSP)
{
this.nroUSP = nroUSP;
}
int getnroUSP ()
{
return nroUSP;
}

void setNome ( String nome)
{
this.nome = nome;
}
String getNome ()
{
return nome;
}

void setNotaFinal ( double notaFinal)
{
this.notaFinal = notaFinal;
}
double getNotaFinal ()
{
return notaFinal;
}
}

class Cadastro
{
Aluno [] aluno;
private int nroUSP;
private String nome;
private double notaFinal;

Aluno [] aprovados ()
{
aluno = new Aluno [nome.length()];

for (int i = 0; i<nome.length(); i++)
{
  Aluno a = aluno[i];
  
  if (a.getNotaFinal () >= 5.0)
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}

Aluno [] emRecuperacao ()
{
aluno = new Aluno [nome.length()];

for (int i = 0; i<nome.length(); i++)
{
  Aluno a = aluno[i];
  
  if ((a.getNotaFinal ()  >= 3.0) && (a.getNotaFinal () < 5.0))
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}

Aluno [] reprovados ()
{
aluno = new Aluno [nome.length()];

for (int i = 0; i<nome.length(); i++)
{
  Aluno a = aluno[i];
  
  if (a.getNotaFinal () < 3.0)
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}
}[/code]

[quote=Maiara]preciso criar uma clase Aluno e uma Cadastro. Nesta ultima, devo chamar a classe Aluno e imprimir 3 listas, uma de aprovados (nota >=5), uma de emRecuperação ( 3<=nota<5) e outra de reprovados (nota <3).
O que está errado no meu código?

[code]class Aluno
{
private int nroUSP;
private String nome;
private double notaFinal;

public Aluno ( int nroUSP, String nome, double notaFinal)
{
this.nroUSP = nroUSP;
this.nome = nome;
this.notaFinal = notaFinal;
}

void setnroUSP ( int nroUSP)
{
this.nroUSP = nroUSP;
}
int getnroUSP ()
{
return nroUSP;
}

void setNome ( String nome)
{
this.nome = nome;
}
String getNome ()
{
return nome;
}

void setNotaFinal ( double notaFinal)
{
this.notaFinal = notaFinal;
}
double getNotaFinal ()
{
return notaFinal;
}
}

class Cadastro
{
Aluno [] aluno;
private int nroUSP;
private String nome;
[/code]
o que é nome?

  private double notaFinal;
  
  Aluno [] aprovados ()
  {
    aluno = new Aluno [nome.length()];

Por que está criando um array do tamanho do nome? Não deveria ser do tamanho da quantidade de alunos? Pode dar um erro aqui …

[code]
for (int i = 0; i<nome.length(); i++)
{
Aluno a = aluno[i];

  if (a.getNotaFinal () >= 5.0)
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}

Aluno [] emRecuperacao ()
{
aluno = new Aluno [nome.length()];

for (int i = 0; i<nome.length(); i++)
{
  Aluno a = aluno[i];
  
  if ((a.getNotaFinal ()  >= 3.0) && (a.getNotaFinal () < 5.0))
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}

Aluno [] reprovados ()
{
aluno = new Aluno [nome.length()];

for (int i = 0; i<nome.length(); i++)
{
  Aluno a = aluno[i];
  
  if (a.getNotaFinal () < 3.0)
  {
    System.out.println ( aluno[i].getNome() + "  " + aluno[i].getnroUSP());
  }
}
return aluno;

}
}[/code]
[/quote]

Onde está a inclusão dos alunos?

sim, exatamente. deveria ser ao inves de nome.length() aluno.length, mas o que eu tenho que fazer para os metodos aprovados (), emRecuperacao() e reprovados() pegar a nota do aluno e imprimir seu respectivo nome?

Da forma que esta seu vetor de string esta vazio!

Falei bobeira, seu vetor de alunos esta vazio. Você só alocou espaço para ela, mas não colocou ninguem nesses espaço, entende?
ex:


Aluno[] aluno = new Aluno[5]; //isso é o tamanho de 5

aluno[0] = new Aluno(1, "Fulano", 7.0); //Aqui esta sendo colocado o Fulano na posição 0.

tó ae … ajusta as 3 listas … mas não vai se acostumando …

public class Aluno {
	private int nroUSP;
	private String nome;
	private double notaFinal;

	public Aluno() {
	}

	public Aluno(int nroUSP, String nome, double notaFinal) {
		super();
		this.nroUSP = nroUSP;
		this.nome = nome;
		this.notaFinal = notaFinal;
	}

	public int getNroUSP() {
		return nroUSP;
	}

	public void setNroUSP(int nroUSP) {
		this.nroUSP = nroUSP;
	}

	public String getNome() {
		return nome;
	}

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

	public double getNotaFinal() {
		return notaFinal;
	}

	public void setNotaFinal(double notaFinal) {
		this.notaFinal = notaFinal;
	}
}
public class Cadastro {

	Aluno[] alunos;
	
	public void incluirAlunos() {
		alunos = new Aluno[] {
				new Aluno(1, "xico", 5.8),
				new Aluno(2, "zé", 4.8),
				new Aluno(3, "maria", 3.0),
				new Aluno(4, "jão", 2.8),
				new Aluno(5, "fulano", 9.8),
				new Aluno(6, "sicrano", 8.7),
				new Aluno(7, "beltrano", 8.1),
				new Aluno(8, "pedro bó", 5.1),
				new Aluno(9, "rosinha", 6.0),
				new Aluno(10, "tonho", 5.0)
		};
	}

	public void processarAlunos() {
		for (int i = 0; i < alunos.length; i++) {
			System.out.print(alunos[i].getNome());
			if (alunos[i].getNotaFinal() >= 5.0)
				System.out.println("\tAprovado");
			else if (alunos[i].getNotaFinal() >= 3.0)
				System.out.println("\tRecuperacao");
			else
				System.out.println("\tReprovado");
		}
	}
	
	public static void main(String[] args) {
		Cadastro c = new Cadastro();
		c.incluirAlunos();
		c.processarAlunos();
	}
}

Esqueci de mencionar … com collections, ficaria bem mais legível e prático, mas creio que não é o objetivo do exercício …

Algumas dicas:

  1. Procure dar títulos mais descritivos para o seu tópicos. Só a palavra “erro” não ajuda em nada.
  2. Deu erro? Cole aqui a stacktrace do erro, ou a mensagem dele. Ou pelo menos descreva o que deveria ocorrer, mas não ocorreu.
  3. Aprenda a usar o depurador. Ele permite que você execute seu código linha-a-linha enquanto verifica os valores das variáveis. Torna a resolução de erros muitíssimo mais fácil, sem falar que te ajuda a estudar programação.

desculpem a demora pra agradecer, mas muito obrigada. E não vou me acostumar não, só preciso de uma mãozinha pra aprender a programar :smiley: