public class Main {
public static void main(String[] p) {
Interface umaInterface = new Interface();
Pessoa umaPessoa;
double soma = 0;//soma idade das pessoas
int numHom = 0;//quantidade de homens
int numFem = 0;//quantidade de mulheres
double medFem = 0;//média feminina
char sexo;
int quant = umaInterface.pegueQuantPessoa();
do {
umaPessoa = umaInterface.peguePessoa();
soma += umaPessoa.informeIdade();
sexo = umaPessoa.informeSexo();
O programa deve contar a quantidade de homens, quantidade de mulheres, idade média de todos e idade médias das mulheres
Exception in thread “main” java.lang.NullPointerException
at principal.Main.main(Main.java:18)
Java Result: 1
package principal;
import javax.swing.JOptionPane;
public class Interface {
Pessoa umaPessoa;
int total,quant,soma,vIdade;
String vSexo;
public int pegueQuantPessoa() {
String numeroLido;
numeroLido = JOptionPane
.showInputDialog("digite quantas pessoas deseja processar ");
quant = Integer.parseInt(numeroLido);
total = total + quant;
return total;
}
public Pessoa peguePessoa() {
int idade = vIdade;
while (total >= 1) {
vSexo = JOptionPane.showInputDialog("digite o sexo da pessoa ");
vIdade = Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa "));
total--;
}
return umaPessoa;
}
public void mostreResul(double media, double medFem, int numHom) {
System.out.print("idade média das pessoas " + media);
if (medFem >= 0)
System.out.println("idade média feminina " + medFem);
else
System.out.println("nenhuma mulher");
System.out.println("quantidade de homens " + numHom);
}
}
a classe pessoa é mais simples, se precisar eu coloco aqui
obrigado
[code] public Pessoa peguePessoa() {
int idade = vIdade;
while (total >= 1) {
vSexo = JOptionPane.showInputDialog("digite o sexo da pessoa ");
vIdade = Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa "));
total--;
}
return umaPessoa;
}[/code]
Esta por sua vez, retorna um objeto umaPessoa, que foi declarada no inicio da classe assim:
Pessoa umaPessoa; // Deveria ser instanciada assim: Pessoa umaPessoa = new Pessoa();
Após isto, você faz a chamada:
soma += umaPessoa.informeIdade();
Porém a variavel umaPessoa está nula e não conseguira acessar o método informeIdade().
No método peguePessoa, está retornando uma Pessoa, que é atributo da classe Interface, porem em momento algum você instancia esta classe Pessoa.
Veja
[code]public Pessoa peguePessoa() {
int idade = vIdade;
while (total >= 1) {
vSexo = JOptionPane.showInputDialog("digite o sexo da pessoa ");
vIdade = Integer.parseInt(JOptionPane.showInputDialog("digite a idade da pessoa "));
total--;
}
return umaPessoa; << RETORNA A REFERENCIA DA PESSOA DECLARADA COMO ATRIBUTO DA CLASSE
} [/code]
Atributo da classe
Pessoa umaPessoa; Mas aonde é instanciado esta referencia umaPessoa? não encontrei no seu código e provavelmente é isto que da o erro de NullPointer.
Pois o peguePessoa está retornando uma referencia NULL,
logo a operacao soma += umaPessoa.informeIdade(); dá erro.
OBS: Como dica, é importante você aprender a utilizar o debug da IDE que você utiliza, pois erros do tipo NullPointer, são faceis de ser identificados !!!