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?
OZZY1
Maio 13, 2021, 5:31pm
#2
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
OZZY1
Maio 13, 2021, 5:42pm
#5
Essa função calcular () está em qual class?
pmlm
Maio 13, 2021, 5:50pm
#6
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.