Dúvida Exercício Parametrização

Galera… o meu professor passou o seguinte enunciado…
porém, não estou conseguindo resolver:

  1. Em uma escola os alunos aprovados ao final do ano letivo recebem citações de honra ao mérito pelo seu desempenho escolar. Somente recebe a citação o aluno cuja media anual for igual ou superior a 7,0. Esta media anual é obtida com base na media aritmética simples das medias bimestrais do aluno. Esta citação é concedida com base em algumas regras, a saber:
    ? O aluno recebe a citação ?honras pelo bom aproveitamento? quando sua media anual estiver entre 7,0 e 7,9
    ? O aluno recebe a citação ?honras pelo ótimo aproveitamento? quando sua media anual estiver entre 8,0 e 8,9
    ? O aluno recebe a citação ?honras pelo excelente aproveitamento? quando sua media anual estiver entre 9,0 e 10,0
    ? O aluno recebe a citação ?aluno exemplar? quando sua media anual estiver entre 9,0 e 10,0 e tiver pelo menos duas medias bimestrais iguais a 10,0

Elabore um algoritmo que leia o nome e as medias bimestrais de diversos alunos até que continua = ?N? e para cada um calcule sua media anual de aproveitamento e sua citação de honra ao mérito. Ao final este programa deverá escrever:
a) Quantos alunos obtiveram ?honras pelo bom aproveitamento?
b) Qual o percentual de alunos que obtiveram o conceito ?aluno exemplar?

Especificações sugeridas:
? double Media (double mb1, double mb2, double mb3, double mb4) ? retorna o valor da média anual do aluno
? boolean duasBimestraisDez (double mb1, double mb2, double mb3, double mb4) ? retorna true se pelo menos duas médias bimestrais forem iguais a dez
? String Citacao(double mediaAnual, boolean duasDez) ? retorna o tipo de citação devida ao aluno

olhem o que eu fiz:

import java.util.Scanner;

public class Alunos {
    
    static int cont1;
    static int cont2;
    static Scanner teclado = new Scanner(System.in);
    
    public static double Media(double m1, double m2, double m3, double m4) {
        double mf = 0;
        mf = (m1 + m2 + m3 + m4) / 4;
        return mf;
        
        
    }
    
    public static boolean duasDez(double m1, double m2, double m3, double m4, boolean duasDez) {
        int aux = 0;

        if (m1 == 10) {
            aux++;
        }
        if (m2 == 10) {
            aux++;
            
        }
        if (m3 == 10) {
            aux++;
        }
        if (m4 == 10) {
            aux++;
        }
        
        if (aux >= 2) {
            duasDez = true;
            return duasDez;
        } else {
            duasDez = false;
            return duasDez;
        }
    }
    
    public static String Cit(double mf, boolean duasDez) {       
        
        String result = "";
        if ((mf >= 7) && (mf < 8)) {
            result = "honras pelo bom aproveitamento";
            cont1++;
            return result;
        }if ((mf >= 8) && (mf < 9)) {
            result = "honras pelo ótimo aproveitamento";
            return result;
        }
        if ((mf >= 9) && (mf < 10)) {
            
            if (duasDez == true) {
                result = "Aluno exemplar";
                cont2++;
                return result;
            } else {
                result = "honras pelo excelente aproveitamento";
                return result;
            }
        }else{
            return result="Notas Insuficientes";
        }
        
       
        
    }
    
    public static void main(String[] args) {
        boolean duasDez=false;
        String nome;
        double m1, m2, m3, m4;
        double mf;
        byte opcao;
        do {
            mf = 0;
            System.out.println("Informe o Nome do Aluno");
            nome = teclado.next();
            System.out.println("Informe a primeira média bimestral");
            m1 = teclado.nextDouble();
            System.out.println("Informe a segunda média bimestral");
            m2 = teclado.nextDouble();
            System.out.println("Informe a terceira média bimestral");
            m3 = teclado.nextDouble();
            System.out.println("Informe a quarta média bimestral");
            m4 = teclado.nextDouble();
            Media(m1, m2, m3, m4);       
            duasDez(m1, m2, m3, m4, duasDez);
            Cit(mf, duasDez);
            System.out.println("Deseja Continuar? \n[1]Sim \n[2]Não");
            opcao = teclado.nextByte();
            
        } while (opcao == 1);
        
        System.out.println("Qtd alunos bom aprov : "+cont1);
        System.out.println("Qtd alunos exemplares : "+cont2);
        
    }
}

mas não está dando certo! porque?

o primeiro erro que encontrei no seu código foi:

boolean duasDez=false; . . . duasDez(m1, m2, m3, m4, duasDez);

Você está passando a variável duasDez por parâmetro, só que ela não é ponteiro (Não é C, nem C++).
faça isso:

duasDez = duasDez(m1, m2, m3, m4); //muda o nome dessa função

a função duasDez vai ficar assim:

[code] public static boolean duasDez(double m1, double m2, double m3, double m4) {
int aux = 0;

    if (m1 == 10) {
        aux++;
    }
    if (m2 == 10) {
        aux++;
        
    }
    if (m3 == 10) {
        aux++;
    }
    if (m4 == 10) {
        aux++;
    }
    
    if (aux >= 2) {
        return true;
    }
       
    return false;
   
}[/code]

só olhei essa parte. Execute os testes e depois você coloca suas outras dúvidas aqui.

1 curtida

Opa, já conseguir resolver o problema!
valeu aí! abraços!