Ajuda com Código

3 respostas Resolvido
B

Olá pessoal, tudo bem ?
Peguei um exercício em java que faz chamada de métodos em uma classe principal.
Um dos métodos exigidos pede que receba 3 notas e descarte a menor, sendo a media as outras duas notas.
Porém não está calculando a média corretamente.
Ex. Insiro as notas 8 3 8 e ele me da a média 12.

Classe aluno.java

package ProjetoLIVRO1;

/**
*

  • @author jose_
    
    */
    
    public class Aluno
    
    {
    
    long matricula;
    
    String nome, disciplina,mensagem;               //Declaração de variaveis
    
    int numeroAulas, numeroFaltas;
    
    double notaAv1,notaAv2,notaAv3,media,limiteFaltas;
    

    public Aluno () //Método desparametrizad
    {

    }
    
    //Métodos set e get
    
    public void setMatricula(long matricula) {
    
    this.matricula = matricula;
    
    }
    
    public long getMatricula() {
    
    return matricula;
    
    }
    
    public void setNome(String nome) {
    
    this.nome = nome;
    
    }
    
    public String getNome() {
    
    return nome;
    
    }
    
    public void setDisciplina(String disciplina) {
    
    this.disciplina = disciplina;
    
    }
    
    public String getDisciplina() {
    
    return disciplina;
    
    }
    
    public void setNumeroAulas(int numeroAulas) {
    
    this.numeroAulas = numeroAulas;
    
    }
    
    public int getNumeroAulas() {
    
    return numeroAulas;
    
    }
    
    public void setNumeroFaltas(int numeroFaltas) {
    
    this.numeroFaltas = numeroFaltas;
    
    }
    
    public int getNumeroFaltas() {
    
    return numeroFaltas;
    
    }
    
    public void setNotaAv1(double notaAv1) {
    
    this.notaAv1 = notaAv1;
    
    }
    

    public double getNotaAv1() {
    return notaAv1;

    }
    
    public void setNotaAv2(double notaAv2) {
    
    this.notaAv2 = notaAv2;
    
    }
    

    public double getNotaAv2() {
    return notaAv2;

    }
    
    public void setNotaAv3(double notaAv3) {
    
    this.notaAv3 = notaAv3;
    
    }
    

    public double getNotaAv3() {
    return notaAv3;

    }

    public double calcularMedia()
    
    {
    
    if (notaAv1<notaAv2 && notaAv1<notaAv3)
    
    {
    
    media = notaAv2+notaAv3/2;
    
    }
    
    else if (notaAv2<notaAv1 && notaAv2<notaAv3)
    
    {
    
    media = notaAv1+notaAv3/2;
    
    }
    
    else
    
    {
    
    media = notaAv1+notaAv2/2;
    
    }
    
    return media;
    

    }

    public double calcularLimiteFaltas()
    
    {
    
    limiteFaltas = numeroAulas*25/100;
    
    return limiteFaltas;
    
    }
    
    public String verificarSituacao()
    
    {
    
    if(media>=6 && numeroFaltas<=limiteFaltas)
     {
         mensagem ="Aluno APROVADO";
     }
     else
     {
         mensagem ="Aluno REPROVADO";
     }
     return mensagem;
    

    }
    }

classe principal que chama os métodos

teste.java

package ProjetoLIVRO1;
import javax.swing.JOptionPane;

/**
*

  • @author jose_
    
    */
    
    public class Teste
    
    {
    
    public static void main(String[]args)
    
    {
    
    Aluno aluno = new Aluno();
    
    aluno.setMatricula(Long.parseLong(JOptionPane.showInputDialog(Digite a matricula:)));
    
    aluno.setNome(JOptionPane.showInputDialog(Digite o nome:));
    
    aluno.setDisciplina(JOptionPane.showInputDialog(Digite a disciplina:));
    
    aluno.setNumeroAulas(Integer.parseInt(JOptionPane.showInputDialog(Digite o número de aulas:)));
    
    aluno.setNumeroFaltas(Integer.parseInt(JOptionPane.showInputDialog(Digite o número de faltas:)));
    
    aluno.setNotaAv1(Double.parseDouble(JOptionPane.showInputDialog(Digite a nota da Av1:)));
    
    aluno.setNotaAv2(Double.parseDouble(JOptionPane.showInputDialog(Digite a nota da Av2:)));
    
    aluno.setNotaAv3(Double.parseDouble(JOptionPane.showInputDialog(Digite a nota da Av3:)));
    
    JOptionPane.showMessageDialog(null,Dados do aluno:\n
    
    + “\t - Matricula: +aluno.getMatricula()+”\n
    
    + “\t - Nome: +aluno.getNome()+”\n
    
    + “\t - Disciplina: +aluno.getDisciplina()+”\n
    
    + “\t - Número de aulas: +aluno.getNumeroAulas()+”\n
    
    + “\t - Número de faltas: +aluno.getNumeroFaltas()+”\n
    
    + “\t - Nota AV1: +aluno.getNotaAv1()+”\n
    
    + “\t - Nota AV2: +aluno.getNotaAv2()+”\n
    
    + “\t - Nota AV3: +aluno.getNotaAv3()+”\n
    
    + "\t - Limite de Faltas: "+aluno.calcularLimiteFaltas());
    
    JOptionPane.showMessageDialog(null, "Sua média é: "+aluno.calcularMedia());
    
    JOptionPane.showMessageDialog(null,O Aluno foi +aluno.verificarSituacao());
    
    JOptionPane.showMessageDialog(null,”\t\t\t Autor: Bruno Fernandes);
    

    }

}

Agradeço a todos pela atenção.

3 Respostas

K
Solucao aceita

Bom Dia.

Você está fazendo o cálculo da média da seguinte forma:

media = notaAv1+notaAv3/2;

Só que o programa segue as mesmas regras da matemática, portanto ele faz primeiro a divisão e depois a soma. 8 + 8/2 => 8+4=12, para resolver o problema coloque as notas entre parenteses.

media = (notaAv1+notaAv3)/2;

B

Obrigado, não acredito que esqueci a ordem de precedência!!
Muito Obrigado mesmo.

K

Por nada, não esqueça de marcar o tópico como Resolvido :smiley:

Criado 3 de novembro de 2018
Ultima resposta 3 de nov. de 2018
Respostas 3
Participantes 2