Escreva um programa para ler um número indeterminado de dados, contendo cada um, a idade de um indivíduo. O último dado, que não entrará nos cálculos, contém o valor de idade igual a ZERO. Calcular e imprimir a idade média deste grupo de indivíduos.
A questão requer que eu use método para fazê-la...
Fiz assim:
packagequestao6;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){classnome{doubleidade2,media;intidade=0,a=0;publicdoubledados(){idade=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite a idade: "));returnidade;}voidcalculo(){nomenum=newnome();while(num.dados()>0){idade2+=num.dados();a+=1;}media=idade2/a;JOptionPane.showMessageDialog(null,"A média das notas é: "+media);}}nomenum=newnome();num.dados();num.calculo();}}
Porém o while as vezes da certo as vezes não... o programa tem que parar de pedir notas quando a nota for "0"
Posso sugerir uma coisa: evite declarar classes dentro de métodos, pois isso dificulta o entendimento do código. Tente usar apenas métodos, ou se precisar de mais de uma classe, declare-a em outro arquivo.
A condição para que o while execute deve ser idade != 0
1 - Enquanto idade digitada for diferente de zero:
a - Ler idade digitada
b - Somar essa idade em uma variável que armazene o total
c - aumentar 1 no contador
2 - Quando idade digitada for zero:
a - calcular a média, dividindo o total pelo número de idades (contador)
b - exibir esse total
Se você seguir com calma cada um desses passos, vai conseguir.
marcosharbs
teste esse codigo aqui:
packagequestao6;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){classnome{doubleidade2,media;intidade=0,a=0;booleanpedir=true;publicdoubledados(){idade=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite a idade: "));returnidade;}voidcalculo(){nomenum=newnome();while(pedir){doublenumero=num.dados();idade2+=numero;if(numero==0){pedir=false;}if(pedir){a+=1;}media=idade2/a;JOptionPane.showMessageDialog(null,"A média das notas é: "+media);}}}nomenum=newnome();num.dados();num.calculo();}}
marcosharbs
mas eu fiz uma correção rápida vc deveria rever seu código todo de novo seguindo as orientações que marcobiscaro2112 e a partir dai implementar o programa
abraço
M
marcobiscaro2112
Uma possível implementação do algoritmo, seguindo o pseudocódigo acima:
packagequestao6;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){/* três variáveis para armazenar valores importantes */// armazena a última idade digitadaintidadeDigitada=0;// armazena a soma do total até entãointtotal=0;// armazena quantas idades foram digitadasintcontador=0;/* condição 1 */do{/* passo 1.a */idadeDigitada=Integer.parseInt(JOptionPane.showInputDialog("Digite a idade: "));/* passo 1.b */total+=idadeDigitada;/* passo 1.c */if(idadeDigitada!=0){contador++;}}while(idadeDigitada!=0);/* fim da condição 1 *//* passo 2.a *//* * Observe que não há verificação para garantir * que o usuário digitou pelo menos uma idade. Se * o contador for zero, a divisão resultará em * NaN (Not A Number). */doublemedia=(double)total/contador;/* passo 2.b */JOptionPane.showMessageDialog(null,"A média é "+media);}}
Gostaria de frisar que não estou querendo fazer o programa para você (apesar de já ter feito…), mas quero que perceba que antes de programar é preciso planejar e seguindo um pseudocódigo ou qualquer espécie de “roteiro”, a implementação em Java é relativamente fácil. Tente entender o código acima e qualquer coisa pergunte.