[Resolvido] Problema exercicio

2 respostas
V
Fala galera, tudo bom ? To com um problema em um exercicio. Vou colocar as classes, em seguida aponto o lugar que ta dando erro. Porém não consegui descobrir como arrumar.
package pacote;

public class DadosFisicos {

	private double peso;
	private double altura;
	private int idade;
	
	public DadosFisicos() { 
		peso = 0.0;
		altura = 0.0;
		idade = 0;
	}

	public double getPeso() {
		return peso;
	}

	public void setPeso(double peso) {
		this.peso = peso;
	}

	public double getAltura() {
		return altura;
	}

	public void setAltura(double altura) {
		this.altura = altura;
	}

	public int getIdade() {
		return idade;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}
	
	public double calcularImc (double altura, double peso) { 
		double imc = 0;
		imc=(getPeso())/(getAltura()*getAltura()); 
		return imc;
	}
	
	public void exibirDados() { 
		System.out.println("Peso: " + getPeso());
		System.out.println("Altura: " + getAltura());
		System.out.println("Idade: " + getIdade());
	}
}
package pacote;

public class Atleta {

	private String nome;
	private int numeroCamisa;
	private String posicao;
	private boolean status;
	private DadosFisicos DadosFisicos;

	
	public Atleta() {
		nome = "";
		numeroCamisa = 0;
		posicao = "";
		status = false;

	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getNumeroCamisa() {
		return numeroCamisa;
	}

	public void setNumeroCamisa(int numeroCamisa) {
		this.numeroCamisa = numeroCamisa;
	}

	public String getPosicao() {
		return posicao;
	}

	public void setPosicao(String posicao) {
		this.posicao = posicao;
	}

	public boolean isStatus() {
		return status;
	}

	public void setStatus(boolean status) {
		this.status = status;
	}

	public DadosFisicos getDadosFisicos() {
		return DadosFisicos;
	}

	public void setDadosFisicos(DadosFisicos dadosFisicos) {
		DadosFisicos = dadosFisicos;
	}

	public int alteraStatus() {
		double imc = DadosFisicos.calcularImc(DadosFisicos.getAltura(), DadosFisicos.getPeso());
		int retorno = 0;
		if (imc <= 18.5) {
			retorno = -1;
		}

		if (imc > 18.5 && imc <= 25) {
			retorno = 0;
			status = true;
		}

		if (imc > 25 && imc <= 30) {
			retorno = -1;
		}

		if (imc > 30) {
			retorno = -1;
		}

	return retorno;

	}



	public void exibirDados() {
		System.out.println("Nome: " + getNome());
		System.out.println("Numero da camisa: " + getNumeroCamisa());
		System.out.println("Posição: " + getPosicao());
		System.out.println("Status: " + isStatus());
	}

}
package pacote;

import java.text.DecimalFormat;

public class TesteTime {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		DecimalFormat df = new DecimalFormat("0.00");  
		Atleta a1 = new Atleta();
		DadosFisicos d1 = new DadosFisicos();
		
		a1.setNome("Pedro");
		a1.setNumeroCamisa(7);
		a1.setPosicao("Centroavante");
		a1.setStatus(false);
		d1.setPeso(98);
		d1.setAltura(1.88);
		d1.setIdade(25);
	    
		a1.exibirDados();
		
	
		double result = d1.calcularImc(d1.getAltura(), d1.getPeso());
		
		
		if (result <= 18.5) {
			System.out.println("O IMC do atleta é de: " + df.format(result));
			System.out.println("<= 18,5 - Jogador tem peso abaixo da normalidade");
		}
		
		if (result >18.5 && result <=25 ) { 
			System.out.println("O IMC do atleta é de: " + df.format(result));
			System.out.println(">18,5 e <=25 - Jogador tem peso dentro da normalidade");
		}
		
		if (result >25 && result <=30 ) { 
			System.out.println("O IMC do atleta é de: " + df.format(result));
			System.out.println("> 25 e <=30 - Jogador tem peso acima da normalidade");
		}
		
		if (result >30) { 
			System.out.println("O IMC do atleta é de: " + df.format(result));
			System.out.println("> 30 - Jogador está obeso");
		}
		
	
		if (a1.isStatus() == false) { 
			if (a1.alteraStatus() == -1 && result <= 30){ 
				System.out.println("Jogador não pode ser titular");
				System.out.println("Seu peso está abaixo da normalidade!");
			}
			
			if (a1.alteraStatus() == -1 && result > 25 && result <= 30){ 
				System.out.println("Jogador não pode ser titular");
				System.out.println("Seu peso está acima da normalidade!");
			}
			
			if (a1.alteraStatus() == -1 && result > 30){ 
				System.out.println("Jogador não pode ser titular");
				System.out.println("Seu peso está completamente fora da normalidade, obeso!");
			}
			
			else { 
				System.out.println("O atleta agora é titular do time!");
			}
			
		}
		
	}

}

O erro ta na ultima classe, da linha 52 até 70.
Quando eu compilo, o eclipse aponta o seguinte erro:

Exception in thread "main" java.lang.NullPointerException
at pacote.Atleta.alteraStatus(Atleta.java:61)
at pacote.TesteTime.main(TesteTime.java:53)

Se quiserem, posso postar o enunciado do exercicio.. porém é meio longo.
Obrigado.

2 Respostas

DarthCego

Ola amigo

voce nao instanciou o objeto dadosFisicos na classe atleta e mais uma coisa sempre use o padrao CamelCase pra objetos
private DadosFisicos dadosFisicos;

public Atleta() {  
       .....
    dadosFisicos = new DadosFisicos(); 
}
Abraços
V
DarthCego:
Ola amigo voce nao instanciou o objeto dadosFisicos na classe atleta e mais uma coisa sempre use o padrao CamelCase pra objetos
private DadosFisicos dadosFisicos;

public Atleta() {  
       .....
    dadosFisicos = new DadosFisicos(); 
}
Abraços

Obrigado amigo,

Era isso mesmo.

E valeu pelas outras dicas.

Abraço !

Criado 17 de abril de 2012
Ultima resposta 17 de abr. de 2012
Respostas 2
Participantes 2