[RESOLVIDO] Tenho uma prova hoje, mas não consigo voltar os dois maiores valores

public float calcular() {

float maior = 0;
float meio = 0;

    if (nota1 > nota2 && nota1 > nota3) {
        maior = nota1;
    } else if (nota2 > nota1 && nota2 > nota3) {
        maior = nota2;
    } else if (nota3 > nota2 && nota3 > nota1) {
        maior = nota3;
    }

    if (nota1 > nota2 && nota1 < nota3 && nota1 < nota2 && nota1 > nota3) {
        meio = nota1;
    } else if (nota2 < nota1 && nota2 > nota3 && nota2 > nota1 && nota2 < nota3) {
        meio = nota2;
    } else if (nota3 > nota1 && nota3 < nota2 && nota3 < nota1 && nota3 > nota2) {
        meio = nota3;
        
    }

    return (maior + meio) /2;
}

é pra receber 3 notas e fazer a média com as duas maiores, alguém sabe o que errei?

Como vc está camando esse method na sua class main?

Aqui: return (maior + meio) /2; // você retorna a média dos dois números , não os dois maiores números.

public static void main(String[] args) {

 ControleProva boletim = new ControleProva();
 
 Prova bimestre = boletim.Nota();
 
    System.out.println(bimestre.getNota1());
 
    System.out.println(bimestre.getNota2());
    
    System.out.println(bimestre.getNota3());
    
    System.out.println(bimestre.calcular());
    
}

assim tá na minha main

é para retornar a média dos dois maiores números

Essa função calcular () está em qual class?

O teu cálculo do meio está errado. Nunca vai entrar e nenhum dos if porque as condições são contraditórias.
Como pode a nota1 ser maior e menor que a nota2 ao mesmo tempo? Tu queres fazer um OU de duas situações:

if ((nota1 > nota2 && nota1 < nota3) || (nota1 < nota2 && nota1 > nota3)) { 
    meio = nota1; 
}

Três formas:

int n1 = 10;
int n2 = 5;
int n3 = 3;
int soma = 0;
int media;

if ( n1 <= n2 && n2 <= n3 ) {
    soma = n2 + n3;
} else if ( n1 <= n3 && n3 <= n2 ) {
    soma = n2 + n3;
} else if ( n2 <= n1 && n1 <= n3 ) {
    soma = n1 + n3;
} else if ( n2 <= n3 && n3 <= n1 ) {
    soma = n1 + n3;
} else if ( n3 <= n1 && n1 <= n2 ) {
    soma = n1 + n2;
} else if ( n3 <= n2 && n2 <= n1 ) {
    soma = n1 + n2;
}

media = soma / 2;

// ou
int temp;
if ( n1 > n2 ) {
    temp = n1;
    n1 = n2;
    n2 = temp;
}
// aqui vc tem a garantia que n1 é maior que n2

if ( n1 > n3 ) {
    temp = n1;
    n1 = n3;
    n3 = temp;
}
// aqui vc tem a garantia que n1 é maior que n2 e n3

if ( n2 > n3 ) {
    temp = n2;
    n2 = n3;
    n3 = temp;
}
// aqui vc tem a garantia que n1 é maior que n2 e n3 e que n2 é maior que n3
// vc tem algo assim, obrigatoriamente n3 <= n2 <= n1
media = ( n2 + n1 ) / 2;

// ou ainda :D
int[] ns = new int[]{ n1, n2, n3 };
Arrays.sort( ns );
media = ( ns[1] + ns[2] ) / 2;

public float calcular() {

    //8 9 10
    
    float soma=0;
    
    if (nota1 <= nota2 && nota2 <= nota3) {
        soma = nota2 + nota3;
    } else if (nota1 <= nota3 && nota3 <= nota2) {
        soma = nota2 + nota3;
    } else if (nota2 <= nota1 && nota1 <= nota3) {
        soma = nota1 + nota3;
    } else if (nota2 <= nota3 && nota3 <= nota1) {
        soma = nota1 + nota3;
    } else if (nota3 <= nota1 && nota1 <= nota2) {
        soma = nota1 + nota2;
    } else if (nota3 <= nota2 && nota2 <= nota1) {
        soma = nota1 + nota2;
    }
    return soma/2; 
}

davidbuzatto

obrigado cara, me ajudou muito, segue aqui.