Registro Acadêmico [RESOLVIDO]

10 respostas
luizaguerra

Estou com outro problema, agora com um programa de Registro Acadêmico.

O código é o seguinte:

public class RegistroAcademico {
	
	private String nomeDoAluno, numeroDeMatricula;
	private boolean eBolsista;
	private int anoDeMatricula;
	private Data dataDeNascimento;
	
	public RegistroAcademico (String nome, String matricula, boolean bolsa, int ano, Data d1){
		nomeDoAluno = nome;
		numeroDeMatricula = matricula;
		eBolsista = bolsa;
		anoDeMatricula = ano;
		dataDeNascimento = d1;
	}
	
	public double calculaMensalidade (){
		double mensalidade = 400;
		if (eBolsista == true){
			mensalidade = mensalidade/2;
		}
		return mensalidade;
	}
	
	public void mostraRegistro (){
		System.out.println ("Nome do Aluno: " + nomeDoAluno);
		System.out.println ("Matricula: " + numeroDeMatricula);
		if (eBolsista == true){
			System.out.println ("O aluno é bolsista.");
		}
		else
			System.out.println ("O aluno não é bolsista.");
		System.out.println ("Mensalidade: " + calculaMensalidade ());
		System.out.println ("Ano de Matrícula: " + anoDeMatricula);
		System.out.println ("Data de Nascimento: " + dataDeNascimento.imprimeData ());
	}
	

}

______________________________________________________________________________________________

public class Data {

	private int dia, mes, ano;
	public Data (int d, int m, int a){
		if (dataEValida (d, m)){
			dia = d;
			mes = m;
			ano = a;
		}
		else{
			dia = 0;
			mes = 0;
			ano = 0;
		}
	}
	
	public boolean dataEValida (int d, int m){
		if ((d>=1)&&(d<=31)&&(m>=1)&&(m<=12)){
			return true;
		}
		else
			return false;
	}
	
	public void imprimeData (){
		System.out.printf("A data é: %d/%d/%d\n\n", dia, mes, ano);
	}
	
}

____________________________________________________________________________________________

public class Main {

	public static void main(String[] args) {
		
		Data d1 = new Data (22,9,1988);
		RegistroAcademico aluno1 = new RegistroAcademico ("Luiza", "08.2.8032", true, 2008, d1);
		
		aluno1.mostraRegistro();
		
	}

}

________________________________________________________________________________________________

Quando eu rodo o programa, aparece um erro assim:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator + is undefined for the argument type(s) String, void

at pkgRegistroAcademico.RegistroAcademico.mostraRegistro(RegistroAcademico.java:36)
at pkgRegistroAcademico.Main.main(Main.java:10)

Não sei o que pode ser, alguma idéia?

10 Respostas

pedroroxd

faltou vc abrir a “{” do else!

pedroroxd

Olha onde tá comentado:

public void mostraRegistro (){ System.out.println ("Nome do Aluno: " + nomeDoAluno); System.out.println ("Matricula: " + numeroDeMatricula); if (eBolsista == true){ System.out.println ("O aluno é bolsista."); } else //AKI VC NÃO ABRIU AS CHAVES... System.out.println ("O aluno não é bolsista."); System.out.println ("Mensalidade: " + calculaMensalidade ()); System.out.println ("Ano de Matrícula: " + anoDeMatricula); System.out.println ("Data de Nascimento: " + dataDeNascimento.imprimeData ()); }

luizaguerra

pedroroxd:
Olha onde tá comentado:

public void mostraRegistro (){ System.out.println ("Nome do Aluno: " + nomeDoAluno); System.out.println ("Matricula: " + numeroDeMatricula); if (eBolsista == true){ System.out.println ("O aluno é bolsista."); } else //AKI VC NÃO ABRIU AS CHAVES... System.out.println ("O aluno não é bolsista."); System.out.println ("Mensalidade: " + calculaMensalidade ()); System.out.println ("Ano de Matrícula: " + anoDeMatricula); System.out.println ("Data de Nascimento: " + dataDeNascimento.imprimeData ()); }

Fiz isso que vc falou das chaves, mas continua dando erro… Acho que pode ser alguma coisa quando eu mando imprimir a data…

pedroroxd

O erro está aki:
System.out.println ("Data de Nascimento: " + dataDeNascimento.imprimeData());

É impossivel vc printar algo do tipo void (o imprimeData() é void).

luizaguerra

pedroroxd:
O que é isso no main?
aluno1.mostraRegistro();

Eu criei um objeto aluno1 e chamei o mostraRegistro para imprimir na tela os atributos que defini antecipadamente pra ele…

juliofsn

Na linha 34 da classe RegistroAcademico, você chama o método Data.imprimeData(), concatenando o retorno desse método com uma String, porém o método não possui retorno. Minha sugestão é você reimplementar esse método retornando uma String.

E porque você está implementando sua própria classe de data? Não é melhor usar java.util.Date ou java.util.Calendar?

pedroroxd

pedroroxd:
O erro está aki:
System.out.println ("Data de Nascimento: " + dataDeNascimento.imprimeData());

É impossivel vc printar algo do tipo void (o imprimeData() é void).


A solução é vc alterar o imprimeData para isso:

public String imprimeData (){ return("A data é: " + dia + "/" + mes+ "/" + ano); }

Saída:
Nome do Aluno: Luiza
Matricula: 08.2.8032
O aluno é bolsista.
Mensalidade: 200.0
Ano de Matrícula: 2008
Data de Nascimento: A data é: 22/9/1988

luizaguerra

juliofsn:
Na linha 34 da classe RegistroAcademico, você chama o método Data.imprimeData(), concatenando o retorno desse método com uma String, porém o método não possui retorno. Minha sugestão é você reimplementar esse método retornando uma String.

E porque você está implementando sua própria classe de data? Não é melhor usar java.util.Date ou java.util.Calendar?

[b]Faz parte do exercicio que eu to fazendo implementar também a classe Data…

Vou tentar colocar retornando uma string…[/b]

pedroroxd

Só altera o método para isso:

public String imprimeData (){ return("A data é: " + dia + "/" + mes+ "/" + ano); }

luizaguerra

pedroroxd:
Só altera o método para isso:

public String imprimeData (){ return("A data é: " + dia + "/" + mes+ "/" + ano); }

Deu certinho fazendo assim! Realmente, colocando como void ia ser difícil dar certo! Obrigada pela ajuda!

Criado 30 de março de 2010
Ultima resposta 30 de mar. de 2010
Respostas 10
Participantes 3