Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Não estou conseguindo definir os parâmetros para as condicionais

public class Aluno { String nome; double nota1; double nota2; double nota3; double media;

public void calcularMedia() {
    double media = (nota1 + nota2 + nota3) / 3;
    System.out.println("A media do aluno " + nome + " é: " + media);
}

public void verificarSituacao() {
    if (media < 0 || media > 10) {
        System.out.println("Média inválida.");
        System.out.println("Verifique se os número que foram inseridos estão corretos.");
    } else if (media >= 7 && media <= 10) {
        System.out.println("Aluno aprovado");
    } else if (media >= 5 && media < 7) {
        System.out.println("Aluno em recuperação");
    }else
        System.out.println("Aluno reprovado");
}

}

1 resposta
solução!

Olá, Kauan! Tudo bem?

O problema no seu código está na forma como você está usando a variável media. A solução mais simples e direta é utilizar a variável de classe media dentro da função calcularMedia(), em vez de criar uma nova variável com o mesmo nome.

  1. Remova a declaração double media; dentro da função calcularMedia():

    public void calcularMedia() {
        // Remova a linha "double media;" aqui
        media = (nota1 + nota2 + nota3) / 3;
        System.out.println("A media do aluno " + nome + " é: " + media);
    }
    
  2. Mantenha a declaração double media; como um atributo da classe Aluno:

    public class Aluno {
    
        String nome;
        double nota1;
        double nota2;
        double nota3;
        double media; // Mantenha esta linha aqui
    
        // ...
    }
    

Código corrigido:

public class Aluno {

    String nome;
    double nota1;
    double nota2;
    double nota3;
    double media;

    public void calcularMedia() {
        media = (nota1 + nota2 + nota3) / 3;
        System.out.println("A media do aluno " + nome + " é: " + media);
    }

    public void verificarSituacao() {
        if (media < 0 || media > 10) {
            System.out.println("Média inválida.");
            System.out.println("Verifique se os número que foram inseridos estão corretos.");
        } else if (media >= 7 && media <= 10) {
            System.out.println("Aluno aprovado");
        } else if (media >= 5 && media < 7) {
            System.out.println("Aluno em recuperação");
        } else {
            System.out.println("Aluno reprovado");
        }
    }
}

Ao remover a declaração double media; dentro da função calcularMedia(), você está usando a variável media que foi declarada como um atributo da classe. Isso significa que a função calcularMedia() está atribuindo o valor da média calculada à variável media da classe, que pode ser acessada pela função verificarSituacao().

Espero ter ajudado.