Problema com classes

7 respostas
V
ola moçada! Estou com um pequeno problema neste programa que chama a classe estudante que tem os indices, Matricula, nome, sexo e um vetor de 4 notas:
class Estudante
{
	int matricula=0;
	String nome=" ";
	char sexo=' ';
	double notas[]=new double[4];

	void exibir()
	{
		System.out.println("Matricula="+matricula+",Nome="+nome+",Sexo="+sexo+",");
	}
	 void atribuirNotas(int numProva,double nota)
	{
		notas[numProva-1]=nota;
	}
	 double lerNotas(int numProva)
	{
		return notas[numProva-1];
	}
}
Dai tem este programa para exibir os dados mas tá dando erro na horas exibir as notas
public class TesteEstudante
{
	public static void main(String args[])
	{
		Estudante a=new Estudante(); 
		a.matricula=2004001;
		a.nome="Maria";
		a.sexo='F';
		a.atribuirNotas(0,7.0);
		a.atribuirNotas(1,8.2);
		a.atribuirNotas(2,6.0);
		a.atribuirNotas(3,5.5);
		System.out.println("Matricula= "+a.matricula+",Nome= "+a.nome+",Sexo= "+a.sexo+",");
		System.out.println("Notas= "+a.atribuirNotas);
		a.exibir();
	}

}

Alguém pode me dizer qual é o problema?????

7 Respostas

M

Virginia, qual é o erro? Qual deveria ser o resultado, e oq esta acontecendo?

V

da erro na linha
System.out.println(“Notas”+ a.atribuirNotas);

cannot resolve variable …

era exibir o nome a matricula o sexo e as quadro notas.

=/

M

Virginia, atribuirNotas() é um método, logo, é necessário o uso de “()” pra chamá-lo, e lembrando q ele recebe parametros… vc tem problemas com relação a sintaxe de java, e a conceitos como visibilidade de atributos da classe… :roll: bem, oq tu quer fazer chamando um método de atribuição de notas dentro de um System.out? Não faz muito sentido… :roll:

V

quero exibir o vet or com as notas que declarei lá em cima :lol:

M

bem então tu não quer atribuir notas… e sim recuperá-las… se importa se eu fizer um refactoring na sua classe Estudante pra deixar… bem, um pouco mais OO e Javalístico? hehe

public class Estudante  { 

   // vc nao precisa declarar valores default aqui,
   // pois o compilador se encarrega de fazê-lo pra ti

   private int matricula; 
   private String nome; 
   private char sexo;
   private float notas[] = new float[4]; // pq tem q ser double?

   public Estudante() { }

   public Estudante( int matricula, String nome, char sexo ) {

      setMatricula( matricula );
      setNome( nome );
      setSexo( sexo );
   }

   public void setMatricula( int matricula ) {

      this.matricula = matricula;
   }

   public void setNome( String nome ) {

      this.nome = nome;
   }

   public void setSexo( char sexo ) {

      this.sexo = sexo;
   }

   public int getMatricula() {

      return matricula;
   }

   public String getNome() {

      return nome;
   }

   public char setSexo() {

      return sexo;
   }

   public void addNota( int numeroProva, double nota ) {

      notas[numeroProva-1] = nota;
   }

   public float getNota( int numeroProva ) { 

      return notas[ numProva-1 ];
   }

   public String toString() { 

     return new String(

        "Matricula: " + getMatricula() + "\n" +
        "Nome: " + getNome()           + "\n" +
        "Sexo: " + getSexo()           + "\n"
     );
   }

}

agora vamos testar isso tudo:

public class TesteEstudante { 

   public static void main( String args[] ) { 

      Estudante estudante = new Estudante( 2004001, "Maria", 'F' );

      // afinal, o numero de provas começa com 1 ou 0?
      estudante.addNota( 1, 7.0 );
      estudante.addNota( 2, 8.2 );
      estudante.addNota( 3, 6.0 );
      estudante.addNota( 4, 9.0 );

      System.out.println( estudante.toString() );
   } 

}

nota: não compilei o código nem nada, fiz agora rapidão… talvez de algum problema, se vc tiver com dúvidas sobre algo, poste :grin:

outra nota: tem muita coisa nesse código q deve ser testada pra não gerar erros, como por ex se vc passar um numero de prova inválido… e estourar o array… mas isso deve ser pensado só depois da funcionalidade ja estar implementada :slight_smile:

maaais uma nota: tb poderia ser pensado em outra forma de usar essas notas sem ser com um array de 4 posições… think OO :wink:

V

deu erro na lina 57
return notas[ numeroProva-1 ] - possible loss of precision
e na linha 66
"Sexo: " + getSexo() + “\n” - cannot resolve symbol method getSexo

O problema eh que eu to começando agora e o professor ainda th dando construtores e metodos sobrecarregados por isso que não use o get set e o this, pq num sei direito pra q eles servem mas muito obrigada pela atençãoo
:grin: :slight_smile: :lol:

M

ta, é só tu colocar um método getSexo():

public char getSexo() {

   return sexo;
}

e com relação a perda de precisão, mude a assinatura do método public void addNota( int numeroProva, double nota ) para public void addNota( int numeroProva, float nota )

Criado 30 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 7
Participantes 2