java.lang.NullPointerException java

java.lang.NullPointerException java
M2
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 12 lat
  • Postów:123
0

Mam taką klasę:

Kopiuj
import java.awt.Graphics;


public class Cegielka {
	private int x, y;
	private int w, h;
	private boolean s;
	
	public Cegielka()
	{
		s = true;
	}
	
	public int getX()
	{
		return x;
	}
	
	public int getY()
	{
		return y;
	}
	 public int getW()
	 {
		 return w;
	 }
	 
	 public int getH()
	 {
		 return h;
	 }
	 
	 public boolean getS()
	 {
		 return s;
	 }
	 
	 public void setX(int nX)
	 {
		 x = nX;
	 }
	 
	 public void setY(int nY)
	 {
		 y = nY;
	 }
	 
	 public void setW(int nW)
	 {
		 w = nW;
	 }
	 
	 public void setH(int nH)
	 {
		 h = nH;
	 }
	 
	 public void setS(boolean bS)
	 {
		 s = bS;
	 }
	 
	 public void wyswietlCegielke(Graphics g)
	 {
		 g.fillRect(x, y, w, h);
	 }
}

W klasie innej wywołuję taką metodę:

Kopiuj
public Cegielka [][] zbudujCegielki(int xE, int yE)
		{
			Cegielka [][] c = new Cegielka [10][20];
			double ax = 0.005 * xE;
			double ay = 0.04 * yE;
			
			for (int i = 0; i < 10; i++)
			{
				for (int j = 0; j < 20; j++)
				{
					c[i][j].setX((int)(ax));
					c[i][j].setY((int)(ay));
					c[i][j].setW((int)(0.04 * xE));
					c[i][j].setH((int)(0.02 * yE));
					
					ax += 0.05 * xE;
				}
				
				ay += 0.03 * yE;
				ax = 0.005 * xE;
			}
			
			return c;
		}

I JAVA mówi, że c jest nullem. Czemu?

XA
  • Rejestracja:około 14 lat
  • Ostatnio:ponad 11 lat
  • Postów:18
0

Gdy inicjalizujesz tabelę, jest wypełniana nullami (nie dotyczy typów prostych). Po prostu na początku pętli dodaj inicjalizację cegiełki.

edytowany 1x, ostatnio: Xack
M2
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 12 lat
  • Postów:123
0

Tzn. że mam przypisać wszystkim elementom tablicy jakąś wartość (w pętli)? Czy jak, bo nie za bardzo rozumiem.

Kopiuj
c[i][j] = new Cegielka(); 

?

edytowany 1x, ostatnio: michal_2
XA
Ale na początku tej, co masz, po co robić drugą.
maszynaz
  • Rejestracja:prawie 18 lat
  • Ostatnio:ponad 12 lat
0
Kopiuj
 
for (int i = 0; i < 10; i++)
{
             for (int j = 0; j < 20; j++)
             {
                  c[i][j] = new Cegielka(); 
                  ......
              }
}
 

"Wszystko co może być wynalezione, zostało wynalezione"
Charless H. Duell - komisarz urzędu patentowego U.S., 1899
edytowany 2x, ostatnio: maszynaz
M2
Wielkie dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.