Estou tentado fazer um programa que recebe a nota obtida na primeira prova por todos os estudantes de uma turma e no final exiba quantas notas estão abaixo da nota mínima para aprovação (seis), quantos estão com nota regular (entre 6 e 7,9) e quantos estão com nota satisfatória (a partir de oito). Esse programa tem que exibir também a média geral das notas e média das notas em cada faixa (abaixo da média, regulares e satisfatórios).
isso que fiz, não ta dando muito certo:
intnota,alunos,maior=1,menor=1;intmedia=0;intcont=0;alunos=Entrada.leiaInt("Quantos alunos tem em sua sala");for(inti=0;i<alunos;i++){nota=Entrada.leiaInt("Informe sua nota!");if(nota<6){nota+=cont;cont++;System.out.println("Notas a baixo da média: "+cont);if((nota==6)||(nota==7)||(nota==9)){System.out.println("Notas regulares: "+nota);}if(nota==8){System.out.println("Notas satisfatórias: "+nota);
Você poderia descrever oque exatamente não está dando certo?
E no seu código está faltando fechar algumas chaves { }
Como a do for, a do primeiro if e do terceiro if. Recomendo utilizar else if no segundo e no terceiro.
Maria_Angela_Guerini
Olá, eu só não coloquei as chaves para a mensagem mão ficar muito grande. Bom, quando eu digito o numero de alunos, tipo 6, ele vai pedir 6 notas respectivamente, só que no final, a cada nota que digito, ele imprime uma mensagem. Eu só consegui fazer ate essa parte, o que estaria faltando depois disso seria calcular a media tambem, mas não fiz ainda pq estou seguindo passo por passo, até que empaquei nesse ai!
Rodrigomarden
Certo, eu fiz aqui mas não testei, rode e vê se atende ao que você quer.
intalunos,maior=1,menor=1;intmediaGeral=0,mediaAbaixo=0,mediaRegular=0,mediaSatisfatoria=0;intcontAbaixo=0,contRegular=0,contSatisfatoria=0;alunos=Entrada.leiaInt("Quantos alunos tem em sua sala");intnotas[]=newint[alunos];for(inti=0;i<alunos;i++){nota[i]=Entrada.leiaInt("\nInforme a nota do aluno "+(i+1)+);}for(inti=0;i<alunos;i++){mediaGeral++;if(nota[i]<6){contAbaixo++;mediaAbaixo+=nota[i];}elseif(nota[i]>=6&¬a[i]<=7){contRegular++;mediaRegular+=nota[i];}elseif(nota<=8){contSatisfatoria++;mediaSatisfatoria+=nota[i];}}System.out.printl("\nQuantidade de alunos com nota abaixo da média: "+contAbaixo);System.out.printl("\nQuantidade de alunos com nota regular: "+contRegular);System.out.printl("\nQuantidade de alunos com nota satisfatoria: "+contSatisfatoria);System.out.printl("\nMédia geral: "+mediaGeral/alunos);System.out.printl("\nMedia de notas abaixo de 6: "+mediaAbaixo/contAbaixo);System.out.printl("\nMedia de notas entre 6 e 7 (Regulares): "+mediaRegular/contRegular);System.out.printl("\nMedia de notas acima de 8 (Satisfatorias): "+mediaSatisfatoria/contSatisfatoria);
Maria_Angela_Guerini
Ele deu erro nessa parte, ai eu tirei o ultimo + e ele apresentou 17 erros cannot find symbol!
Rodrigomarden
Tente agora:
intalunos,maior=1,menor=1;intmediaGeral=0,mediaAbaixo=0,mediaRegular=0,mediaSatisfatoria=0;intcontAbaixo=0,contRegular=0,contSatisfatoria=0;alunos=Entrada.leiaInt("Quantos alunos tem em sua sala");intnotas[]=newint[alunos];for(inti=0;i<alunos;i++){notas[i]=Entrada.leiaInt("\nInforme a nota do aluno "+(i+1));}for(inti=0;i<alunos;i++){mediaGeral++;if(notas[i]<6){contAbaixo++;mediaAbaixo+=notas[i];}elseif(notas[i]>=6&¬as[i]<=7){contRegular++;mediaRegular+=notas[i];}elseif(notas[i]<=8){contSatisfatoria++;mediaSatisfatoria+=notas[i];}}System.out.println("\nQuantidade de alunos com nota abaixo da média: "+contAbaixo);System.out.println("\nQuantidade de alunos com nota regular: "+contRegular);System.out.println("\nQuantidade de alunos com nota satisfatoria: "+contSatisfatoria);System.out.println("\nMédia geral: "+mediaGeral/alunos);System.out.println("\nMedia de notas abaixo de 6: "+mediaAbaixo/contAbaixo);System.out.println("\nMedia de notas entre 6 e 7 (Regulares): "+mediaRegular/contRegular);System.out.println("\nMedia de notas acima de 8 (Satisfatorias): "+mediaSatisfatoria/contSatisfatoria);
Maria_Angela_Guerini
Agora ele mostrou erro nas Entradas(cannot find symbol)!
Rodrigomarden1 like
Eu nunca havia usado essa forma para ler valores em java, eu apenas copiei o que você colocou em seu código.
Você instanciou a classe Scanner, declarou o objeto para poder ler os valores?
Maria_Angela_Guerini
não usei a classe scanner, até porque so leiga nela ainda!
Rodrigomarden1 like
De onde você está utilizando o Entrada.leiaInt então? É algum método na sua classe?
Maria_Angela_Guerini
A principio seria só pra ele armazenar o que fosse digitado em “alunos”
Rodrigomarden1 like
Sim, isso eu entendo, mas de onde ela está vindo? está sendo importado de algum lugar? algum método ou classe?
Ela funciona em outros programas que você já fez?
Que IDE você está utilizando?
Maria_Angela_Guerini
Ele não esta sendo importado, nem classe e nem metodo! Eu uso o Drjava!
Rodrigomarden1 like
É, eu nunca utilizei dessa forma e é estranho não estar vindo de nenhum lugar.
Para implementar o Scanner é bem fácil, basta apenas dar import na java.util.Scanner
E criar um objeto a partir dela: Scanner entrada = new Scanner(System.in);
Eu realizei um teste no código aqui e está funcionando perfeitamente:
Scannerentrada=newScanner(System.in);intalunos,maior=1,menor=1;floatmediaGeral=0,mediaAbaixo=0,mediaRegular=0,mediaSatisfatoria=0;intcontAbaixo=0,contRegular=0,contSatisfatoria=0;System.out.println("Quantos alunos tem em sua sala");alunos=entrada.nextInt();intnotas[]=newint[alunos];for(inti=0;i<alunos;i++){System.out.println("\nInforme a nota do aluno "+(i+1));notas[i]=entrada.nextInt();}for(inti=0;i<alunos;i++){mediaGeral+=notas[i];if(notas[i]<6){contAbaixo++;mediaAbaixo+=notas[i];}elseif(notas[i]>=6&¬as[i]<=7){contRegular++;mediaRegular+=notas[i];}elseif(notas[i]>=8){contSatisfatoria++;mediaSatisfatoria+=notas[i];}}System.out.println("\nQuantidade de alunos com nota abaixo da média: "+contAbaixo);System.out.println("\nQuantidade de alunos com nota regular: "+contRegular);System.out.println("\nQuantidade de alunos com nota satisfatoria: "+contSatisfatoria);System.out.println("\nMédia geral: "+mediaGeral/alunos);System.out.println("\nMedia de notas abaixo de 6: "+mediaAbaixo/contAbaixo);System.out.println("\nMedia de notas entre 6 e 7 (Regulares): "+mediaRegular/contRegular);System.out.println("\nMedia de notas acima de 8 (Satisfatorias): "+mediaSatisfatoria/contSatisfatoria);
Maria_Angela_Guerini
Mds, deu certo, gente, muito obrigada!
H
Henrique51 like
importjava.util.Scanner;publicclassWtestes{publicvoidlerDados(){intalunos,maior=1,menor=1;floatmediaGeral=0,mediaAbaixo=0,mediaRegular=0,mediaSatisfatoria=0;intcontAbaixo=0,contRegular=0,contSatisfatoria=0;Scannerler=newScanner(System.in);System.out.println("Quantos alunos tem em sua sala");alunos=ler.nextInt();floatnotas[]=newfloat[alunos];for(inti=0;i<alunos;i++){System.out.println("\nInforme a nota do aluno "+(i+1));notas[i]=ler.nextFloat();}for(inti=0;i<alunos;i++){mediaGeral+=notas[i];if(notas[i]<6){contAbaixo++;mediaAbaixo+=notas[i];}elseif(notas[i]>=6&¬as[i]<=7.9){contRegular++;mediaRegular+=notas[i];}elseif(notas[i]>=8){contSatisfatoria++;mediaSatisfatoria+=notas[i];}}System.out.println("\nQuantidade de alunos com nota abaixo da média: "+contAbaixo);System.out.println("\nQuantidade de alunos com nota regular: "+contRegular);System.out.println("\nQuantidade de alunos com nota satisfatoria: "+contSatisfatoria);System.out.println("\nMédia geral: "+mediaGeral/alunos);System.out.println("\nMedia de notas abaixo de 6: "+mediaAbaixo/contAbaixo);System.out.println("\nMedia de notas entre 6 e 7 (Regulares): "+mediaRegular/contRegular);System.out.println("\nMedia de notas acima de 8 (Satisfatorias): "+mediaSatisfatoria/contSatisfatoria);}publicstaticvoidmain(String[]args){Wtestesteste=newWtestes();teste.lerDados();}}
Eu fiz desse jeito, com algumas mudanças de notas para float pois pode ser decimais. Teste ai!
Rodrigomarden1 like
De nada,
Recomendo estudar um pouco sobre o scanner e entender o código, pois pelo seu código inicial dá para ver que você teve um pouco de dificuldade em entender oque se pedia exatamente.