Błąd z Iteratorem, NullPointerException

0

Witam,

Mam za zadanie wykonać w Javie psudo grę RPG, gdzie stworze klasę bohatera, który będzie posiadał tak jakby swój ekwipunek na broń, zbroję, mikstury w postaci różnych rodzai kolekcji elementów.

Mam problem w postaci błędu NullPointerException występującego w metodzie sprawdzającej czy mogę jeszcze coś dorzucić do ekwipunku.

Poniżej zamieszczam kod tej właśnie klasy:

package com.postacie;
import java.util.*;

import com.zbroja.*;
import com.bron.*;
import com.postacie.MojWyjatek;
import com.mikstury.*;

public class Postac {

	// Dane Podstawowe
	protected static String NazwaBohatera;
	protected static String Pseudonim;	
	
	// Parametry	
	protected int Siła;
	protected int Zrecznosc;
	protected int Zywotnosc;
	protected int Energia;
	protected static int PktDoswiadczenia;
	protected static int PktNastLvl;
	protected static int Lvl;
	protected static int Złoto;
	protected static int MaxObciazenie;
	
	// Założone na sobie	
	protected Zbroja Hełm;
	protected Zbroja Napiersnik;
	protected Zbroja Rekawice;
	protected Zbroja Buty;
	protected Zbroja Pas;
	
	protected Bron PrawaReka;
	protected Bron LewaReka;
	protected Zbroja LewaReka2;
	
	protected Mikstury PodrecznaMikst;
	
	// Ekwipunek
	private HashSet<Zbroja> EkwipunekZbroje;
	private ArrayList<Mikstury> EkwipunekMikstury;
	private LinkedList<Bron> EkwipunekBron;
	
	public Postac(String NazwaBohatera, String Pseudonim)
	{
		this.NazwaBohatera = NazwaBohatera;
		this.Pseudonim = Pseudonim;
		this.PktDoswiadczenia = 0;
		this.PktNastLvl = 1000;
		this.Lvl = 1;
		this.Złoto = 0;
		this.MaxObciazenie = 100;
	}
	
	// METODY	
		
		
	public int SprawdzPojemnosc()
	{
		// Wartosci tymczasowe
		Zbroja ZbrojaTemp;
		Bron BronTemp;
		Mikstury MiksturyTemp;
		
		// Sumatory
		int SumaZbroja = 0;
		int SumaBron = 0;
		int SumaMikstury = 0;
		
		if(!EkwipunekZbroje.isEmpty())  <---------- TUTAJ BŁĄD
		{
		Iterator<Zbroja> iter = EkwipunekZbroje.iterator();
		
		while(iter.hasNext())
		{
			ZbrojaTemp = (Zbroja) iter.next();
			SumaZbroja += ZbrojaTemp.Ciezar;			
			}
		}
		
		if(!EkwipunekBron.isEmpty()) 
		{
		Iterator<Bron> iter = EkwipunekBron.iterator();
		
		while(iter.hasNext())
		{
			BronTemp = (Bron) iter.next();
			SumaZbroja += BronTemp.Ciezar;			
			}
		}
		
		if(!EkwipunekMikstury.isEmpty()) 
		{
		Iterator<Mikstury> iter = EkwipunekMikstury.iterator();
		
		while(iter.hasNext())
		{
			MiksturyTemp = (Mikstury) iter.next();
			SumaZbroja += MiksturyTemp.Ciezar;			
			}
		}
		
		int SumaCalkowita = SumaZbroja + SumaBron + SumaMikstury;
		
		return SumaCalkowita;
	}
	
	public void DodajDoEkwipunku(Zbroja Zbroja)
	{
		try{
		if(SprawdzPojemnosc() + Zbroja.Ciezar <= 100)     <---------- TUTAJ BŁĄD
		{
			EkwipunekZbroje.add(Zbroja);
		}
		else{
			throw new MojWyjatek("Nie można dodać Zbroji do ekwipunku. Przkroczony ciezar maksymalny");
			}
		}
		catch (MojWyjatek exc)
		{
			exc.printStackTrace();
			System.out.println(exc);
		}
		finally {
			System.out.println("Zakończono dodawanie do ekwipunku");
			System.out.println();
			}		
		}
	
	public void DodajDoEkwipunku(Bron Bron)
	{
		try{
			if(SprawdzPojemnosc() + Bron.Ciezar <= 100)  
			{
				EkwipunekBron.add(Bron);
			}
			else{
				throw new MojWyjatek("Nie można dodać Broni do ekwipunku. Przkroczony ciezar maksymalny");
				}
			}
			catch (MojWyjatek exc)
			{
				exc.printStackTrace();
				System.out.println(exc);
			}
			finally {
				System.out.println("Zakończono dodawanie do ekwipunku");
				System.out.println();
				}		
	}
	
	public void DodajDoEkwipunku(Mikstury Mikstura)
	{
		try{
			if(SprawdzPojemnosc() + Mikstura.Ciezar <= 100)
			{
				EkwipunekMikstury.add(Mikstura);
			}
			else{
				throw new MojWyjatek("Nie można dodać Mikstury do ekwipunku. Przkroczony ciezar maksymalny");
				}
			}
			catch (MojWyjatek exc)
			{
				exc.printStackTrace();
				System.out.println(exc);
			}
			finally {
				System.out.println("Zakończono dodawanie do ekwipunku");
				System.out.println();
				}		
	}	

Z góry dziękuję Wam za pomoc,

1

w którym miejscu tworzysz obiekt EkwipunekZbroje?

0

Zamień:

private HashSet<Zbroja> EkwipunekZbroje;

na:

private HashSet<Zbroja> EkwipunekZbroje = new HashSet<Zbroja>();

1 użytkowników online, w tym zalogowanych: 0, gości: 1