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:
[code]package questao6;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
class nome{
double idade2,media;
int idade=0,a=0;
public double dados(){
idade = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite a idade: "));
return idade;}
void calculo(){
nome num = new nome();
while(num.dados() > 0){
idade2 += num.dados();
a +=1;}
media = idade2/a;
JOptionPane.showMessageDialog(null, "A média das notas é: " + media );
}
}
nome num = new nome();
num.dados();
num.calculo();
}
}[/code]
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
while (idade != 0) { // traduzindo, ficaria:
// enquanto idade for diferente de zero, faça:
total += idade;
a++;
}
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.
package questao6;
import javax.swing.JOptionPane;
public class Main{
public static void main(String[] args) {
class nome{
double idade2,media;
int idade=0,a=0;
boolean pedir = true;
public double dados(){
idade = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite a idade: "));
return idade;}
void calculo(){
nome num = new nome();
while(pedir){
double numero = 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 );
}
}
}
nome num = new nome();
num.dados();
num.calculo();
}
}
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
Uma possível implementação do algoritmo, seguindo o pseudocódigo acima:
package questao6;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
/* três variáveis para armazenar valores importantes */
// armazena a última idade digitada
int idadeDigitada = 0;
// armazena a soma do total até então
int total = 0;
// armazena quantas idades foram digitadas
int contador = 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).
*/
double media = (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.