[Ajuda]Exercicio de calculo de media

8 respostas
G
public class mediaAlunos
	public static void main (String args [])

	
	int n1 = 5;
	int n2 = 7;
	int n3 = 8;
	int media;
	
	if ( n1 <= 5) {
		n1 = 0;
	} if ( n2 <= 5) {
		n2 = 0;
	} if (n3 <= 5) {
		n3 = 0;
	}

	media = ( n1 + n2 + n3 / 3);

	if (media >= 10 ) && (media <= 9 ); {
		System.out.println("Conceito A");
	}
		if (media >= 8 ) && (media < 9 ) {
		System.out.println("Conceito B");
		} 
			if (media >= 5 ) && (media <= 7 ) {
				System.out.println("Conceito C");

				} else { 
					System.out.println("Reprovado");
				}
	}
}

opa, so iniciante nesse mundo java, queria que vcs me dessem uma luz nesse exercicio simples
Escrevi esse codigo mas encontra 19 erros no algoritmo, depois da soma das medias, o que estou de fazendo de errado?
Agradeço se responderem :thumbup:
Valeu

8 Respostas

E

Declare a variável média como Float

jrbilll

Tipo inteiro nao pode receber valor fracionário. Como dito acima, declare como float

A

Erro na expressão, no caso a divisão ocorrerá primeiro, isso altera o resultado esperado.

media = ( n1 + n2 + n3 / 3);

Correto

media = ( n1 + n2 + n3) / 3;

Esse erro tem um [color=red] ;[/color] e falta o b[/b], é só colocar ou tirar.

if (media >= 10 ) && (media <= 9 ); {

Você pode fazer

if ((media >= 10 ) && (media <= 9 )) {

ou
Você pode fazer

if (media >= 10  && media <= 9 ) {

Tem outros com esse mesmo erro

Um outro error é que ao dividir um valor o resultado é um valor real, altere de int media; para double media; ou faça um cast media = (int)( n1 + n2 + n3) / 3;, nesse caso pode as casas decimal.

alexfe
int n1 = 5;  
     int n2 = 7;  
     int n3 = 8;  
     int media;  // aqui não pode ser int tem que ser double ou float
       
     if ( n1 <= 5) {  
         n1 = 0;  
     } if ( n2 <= 5) {  
         n2 = 0;  
     } if (n3 <= 5) {  
         n3 = 0;  
     }  
   
     media = ( n1 + n2 + n3 / 3);  // aqui vc fa´ra uma conversão para float ou double e modifique a expressão para media =  (n1 + n2 + n3 ) /3;
   
     if (media >= 10 ) && (media <= 9 ); {  // aqui vc está colocando  ; (ponto e virgula) depois da condição isso não existe. Essa condição tambem está errada coleque if(media >= 9 && media <= 10)
         System.out.println("Conceito A");  
     }  
         if (media >= 8 ) && (media < 9 ) {  
         System.out.println("Conceito B");  
         }   
             if (media >= 5 ) && (media <= 7 ) {  
                 System.out.println("Conceito C");  
   
                 } else {   
                     System.out.println("Reprovado");  
                 }  
     }
G

Obrigado galerinha do mal, tava pensando que o erro era nos IFS e else que nao dei atenção ao resto :oops:

EDIT: Executei pra ver no que dava, minha média somada e dividida por 3 deu 5, intao era pra cair no conceito C
mas apareceu Conceito A e conceito C, quando eu executei, alguem poderia me explicar pq aconteceu isso ?

como ficou depois da ajuda de vcs:

public class mediaAlunos {
	public static void main (String args []) {

	int n1 = 5;
	int n2 = 7;
	int n3 = 8;
	double media;
	
	if ( n1 <= 5) {
		n1 = 0;
	} if ( n2 <= 5) {
		n2 = 0;
	} if (n3 <= 5) {
		n3 = 0;
	}

	media = ( n1 + n2 + n3) /3;

	if (media >= 10 && media <= 9 ) {
		System.out.println("Conceito A");
	}
		if (media >= 8 && media < 9 ) {
		System.out.println("Conceito B");
		} 
			if (media >= 5 && media <= 7 ) {
				System.out.println("Conceito C");

				} else { 
					System.out.println("Reprovado");
				}
	}
}

depois vo fazer com que ele faça leitura de teclado e tals

alexfe

olha doi erros na primeira condição

if (media >= 10 && media <= 9 );

tira esse ponto e virgula no final.
e repare no que esta fazendo na condição media >= 10 esta errado tem que ser media <= 10.
olha outro erro media <= 9 tem que ser media >= 9 então ficaria if(media >= 9 && media <= 10)

assim vc verifica o ontervao de 9 até 10

pmlm

Ainda assim, faltam alguns else aí no meio. Senão vais obter Reprovado depois de Conceito A e Conceito B.

felipebonezi

Vamos recapitular um conceito de LÓGICA ou MATEMÁTICA.

code - //Todos os numeros maiores que ‘y’, não incluindo o mesmo.
(x<y) - //Todos os numeros menores que ‘y’, não incluindo o mesmo.
(x==y) - //‘x’ igual a ‘y’.
(x>=1 && x<=5) //Todos os numeros entre ‘1’ e ‘5’ incluindo os mesmos.
(x<=1 || x>=5) //Todos os números menos que ‘1’ ou maiores que ‘5’, ou seja, nenhum numero entre ‘1’ e ‘5’ se encaixa.
(x<=1 && x>=5) //CONDIÇÃO ERRADA, não existe um numero menor que 1 e maior que 5!!!
(x>=1 || x<=5) //Não está errado, mas é a mesma coisa que dizer todos os ‘x’ pertencentes ao Real, ou seja, qualquer numero.
[/code]
Espero ter ajudado,

Abraço.

Criado 24 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 8
Participantes 7