Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

"Erro"

Estava tentando fazer um modelo que indicava se o aluno foi ou não aprovado. Contudo recebi apenas 0 como resposta. Podem me ajudar a descobrir onde está o erro.. Tenho certeza de que está na minha cara, mas não to achando.

package escola;

public class TestaEscola {

    public static void main(String[] args) {
        Aluno thiago = new Aluno();

        Provas provaThiago = new Provas();


        provaThiago.setNota1(9);
        provaThiago.setNota2(4);
        provaThiago.setNota3(7);
        provaThiago.setMedia(media); //Coloquei aqui porque eu imagino que tenho que chamar o método média, mas ele apresenta erro.
        System.out.println("Thiago: " + provaThiago.getMedia());


    }
}

package escola;

public class Provas {
    private double nota1;
    private double nota2;
    private double nota3;
    private double media;
    private boolean aprovado;

public double getNota1() {
        return nota1;
    }

    public void setNota1(double nota1) {
        this.nota1 = nota1;
//pulei os getter e setter das demais notas

public void setMedia(double media) {
        this.media = (nota1 + nota2 + nota3)/3;
        this.media = media;

        if(media >= 5) {
            aprovado = true;
        }

    }

    public double getMedia() {
        return media;
    }
}
4 respostas

Em tempo: o retorno que recebo é "Thiago: 0.0"

solução!

Bom dia Patrick. O erro está ocorrendo porque a variável media não existe na sua classe de teste. Assim, você acabou de setar as notas da classe Provas. Faz um método chamado aplicaMedia que não recebe nada, pois o estado de Provas já está setado com as notas e retorna se foi ou nao aprovado:

public boolean aplicaMedia() {
    this.media = (nota1 + nota2 + nota3)/3;

        if(media >= 5) {
            return true;
        } else {
        return false;
    }
}

Obrigado Guilherme!!

Testa esse código, acredito que não seja a melhor solução mais já resolve o problema. No seu código você estava retornando media mais estava guardando o true no aprovado o problema esta nisso, da pra melhorar o código usando um método boolean.

public class TestaEscola {

    public static void main(String[] args) {
        //Aluno thiago = new Aluno();

        Provas provaThiago = new Provas();


        provaThiago.setNota1(9);
        provaThiago.setNota2(4);
        provaThiago.setNota3(7);

        provaThiago.Media();


    }
}

public class Provas {
    private double nota1;
    private double nota2;
    private double nota3;
    private double media;

    public double getNota1() {
        return nota1;
    }

    public double getNota2() {
        return nota2;
    }

    public double getNota3() {
        return nota3;
    }

    public void setNota1(double nota1) {
        this.nota1 = nota1;

    }

    public void setNota2(double nota2) {
        this.nota2 = nota2;

    }

    public void setNota3(double nota3) {
        this.nota3 = nota3;

    }

    public boolean Media() {

        media = (nota1 + nota2 + nota3) / 3;
        if (media >= 5) {

            System.out.println("O aluno foi aprovado com a média: " + Math.round(media));
            return true;

        } else {

            System.out.println("O aluno foi reprovado com a média: " + Math.round(media));
            return false;
        }

    }

}