While não funciona

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”

while(num.dados() != 0)

Ja tentei tbm nao da certo…

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++;
}

Ajudou?

Pseudocódigo:

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.

teste esse codigo aqui:

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.

De onde você tirou este exercício?