Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Avatar

[Resolvido] Erro com classe aninhada

Recommended Posts

Saudações!

 

Seguinte, no código abaixo está me acontecendo o seguinte output (com exception):

 

Nome: Vagner Paludo Landskron Idade: 27

Sexo: Masculino

---------

ATRIBUTOS

---------

Exception in thread "main" java.lang.NullPointerException

at testePriv.printFicha(testePriv.java:76)

at testePriv.main(testePriv.java:94)

 

Mas se eu descomentar o trecho de código onde está a tag [1] (linha 70: //Atributos atr = new Atributos();[1]) o código funciona?

A minha idéia, neste código, foi testar vários conceitos do java, como classes/métodos static, tipo enum, classes aninhadas, packages, etc...

 

No entanto, não entendo porque ele não aceita a criação dentro do construtor da mesma classe?

 

obs.: estou usando a versão 1.6 do java

 

Segue o código:

//package jogo;

enum Sexo { MASCULINO, FEMININO }

class Porrada {
	static int getDano(int forca) {
		 return forca*2;
	}
}


public class testePriv {
	String nome;
	int idade;
	Atributos atr;
	Sexo sexo;
	
	class Atributos {
	int forca;
	int destreza;
	int vigor;
	int magia;
	int pvs;
	int mana;

	Atributos() {
		this.forca = 0;
		this.destreza = 0;
		this.vigor = 0;
		this.magia = 0;
		this.pvs = 0;
		this.mana = 0;
	}

	int getForca()	 { return this.forca; }
	int getDestreza()  { return this.destreza; }
	int getVigor()	 { return this.vigor; }
	int getMagia()	 { return this.magia; }
	int getPvs()	   { return this.pvs; }
	int getMana()	  { return this.mana; }

	void setForca(int forca)	{ this.forca = forca; }
	void setDestreza(int destreza) { this.destreza = destreza; }
	void setVigor(int vigor)	{ this.vigor = vigor; }
	void setMagia(int mana)	{ this.magia = magia; }
	void setPvs(int pvs)	  { this.pvs = pvs; }
	void setMana(int mana)	 { this.mana = mana; }
}


	testePriv() {
	   this.nome = "Vagner Paludo Landskron";
	   this.idade = 27;
	   setSexo("m");
	}

	public void inicializar() {
	   Atributos atr = new Atributos();
	}

	String getNome() { return this.nome; }
	int getIdade() { return this.idade; }
	String getSexo() { if (sexo == Sexo.MASCULINO) return "Masculino"; else return "Feminino"; }

	void setNome(String nome) { this.nome = nome; }
	void setIdade(int idade) { this.idade = idade; }
	void setSexo(String sexo) { if (sexo.equals("m")) this.sexo = Sexo.MASCULINO; else this.sexo = Sexo.FEMININO; }

	void printFicha() {
		//Atributos atr = new Atributos();[1]
		System.out.println("Nome: " + getNome() + "	 Idade: " + getIdade());
		System.out.println("Sexo: " + getSexo());
		System.out.println("---------");
		System.out.println("ATRIBUTOS");
		System.out.println("---------");
		atr.setForca(12);
		System.out.println("For: " + atr.getForca());
		System.out.println("Dex: " + atr.getDestreza());
		System.out.println("Vig: " + atr.getVigor());
		System.out.println("Mag: " + atr.getMagia());
		System.out.println("---------");
		System.out.println("PVs: " + atr.getPvs());
		System.out.println("Mana: " + atr.getMana());
		System.out.println("---------");
		System.out.println("---LOG---");
		System.out.println("Te dei um soco que causou " + Porrada.getDano(atr.getForca()) + " de dano !");
		System.out.println("---------");

	}

	public static void main(String args[]) {
		testePriv a = new testePriv();
		a.inicializar();
		a.printFicha();
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal, já resolvi.

 

Forte abraço,

 

ps.: o código ficou assim:

 

/**
 *
 */
//package br.jogo;

/**
 * @author Vagner
 *
 */

enum Sexo { MASCULINO, FEMININO }

strictfp class Porrada {
	static int getDano(int forca) {
		 double res;
		 res = forca*2.19204890128490122190481239048123489298349021834901283;
		 return (int)res;
	}
}


public class Jogador {
	String nome;
	int idade;
	Atributos atr = new Atributos();
	Sexo sexo;

	class Atributos {
	int forca;
	int destreza;
	int vigor;
	int magia;
	int pvs;
	int mana;

	Atributos() {
		this.forca = 0;
		this.destreza = 0;
		this.vigor = 0;
		this.magia = 0;
		this.pvs = 0;
		this.mana = 0;
	}

	int getForca()	 { return this.forca; }
	int getDestreza()  { return this.destreza; }
	int getVigor()	 { return this.vigor; }
	int getMagia()	 { return this.magia; }
	int getPvs()	   { return this.pvs; }
	int getMana()	  { return this.mana; }

	void setForca(int forca)	{ this.forca = forca; }
	void setDestreza(int destreza) { this.destreza = destreza; }
	void setVigor(int vigor)	{ this.vigor = vigor; }
	void setMagia(int mana)	{ this.mana = mana; }
	void setPvs(int pvs)	  { this.pvs = pvs; }
	void setMana(int mana)	 { this.mana = mana; }
}


	Jogador() {
	   setNome( "Vagner Paludo Landskron" );
	   setIdade( 27 );
	   setSexo( "m" );
	   //Atributos atr = new Atributos();
	}


	String getNome() { return this.nome; }
	int getIdade() { return this.idade; }
	String getSexo() { if (sexo == Sexo.MASCULINO) return "Masculino"; else return "Feminino"; }

	void setNome(String nome) { this.nome = nome; }
	void setIdade(int idade) { this.idade = idade; }
	void setSexo(String sexo) { if (sexo.equals("m")) this.sexo = Sexo.MASCULINO; else this.sexo = Sexo.FEMININO; }

	void printFicha() {
		//Atributos atr = new Atributos();
		System.out.println("Nome: " + getNome() + "	 Idade: " + getIdade());
		System.out.println("Sexo: " + getSexo());
		System.out.println("---------");
		System.out.println("ATRIBUTOS");
		System.out.println("---------");
		System.out.println("For: " + atr.getForca());
		System.out.println("Dex: " + atr.getDestreza());
		System.out.println("Vig: " + atr.getVigor());
		System.out.println("Mag: " + atr.getMagia());
		System.out.println("---------");
		System.out.println("PVs: " + atr.getPvs());
		System.out.println("Mana: " + atr.getMana());
		System.out.println("---------");
		System.out.println("---LOG---");
		System.out.println("Te dei um soco que causou " + Porrada.getDano(atr.getForca()) + " de dano !");
		System.out.println("---------");

	}

	public static void main(String args[]) {
		Jogador a = new Jogador();
		a.atr.setForca(12);
		a.printFicha();
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.