Stworzyć kolekcję ListaNaTablicy2D, która będzie pamiętała listę obiektów klasy Object w
tablicy dwuwymiarowej. W konstruktorze podawane są wielkości tych dwóch wymiarów (liczbę
wierszy, liczbę kolumn). Dla uproszczenia załóżmy, że do tablicy można tylko dodawać elementy bez
podania miejsca, co powoduje dodanie obiektu na koniec kolekcji. Jeśli zakładamy, że mamy n wierszy
i m kolumn, to elementy będą dodawane na miejsca w kolejności (0,0), (0,1), (0,2), …,
(0,m-1),(1,0),(1,1),(1,2),…,(1,m-1),(2,0),…,(n-1,0),(n-1,1),…,(n-1,m-
1). Kolekcja ta powinna udostępniać Iterator do przeglądania jej elementów (co najmniej
jednokierunkowy, dla chętnych – dwukierunkowy). Iterator powinien przesuwać się po elementach
wg wcześniej opisanego porządku. Iterator ten powinien uniemożliwiać dodawanie elementów (dla
chętnych – umożliwia dodawanie elementu) wyrzucając odpowiedni wyjątek. Interfejs Iterator ma
być wzięty z biblioteki Javy, co spowoduje, że poprawnie wykonane zadanie pozwoli np. na wykonanie
poniższej postaci pętli:
ListaNaTablicy2D lista=New ListaNaTablicy2D(5,6);
lista.add(new Integer(15));
// … dodawanie elementów
for(Object obj:lista)
oto moją klasa ListaNaTablicy2D:
public class ListaNaTablicy2D implements Collection<Object>
{
Object[][] tablicaDanych;
int rozmiarX = 0;
int rozmiarY = 0;
int licznikX = 0;
int licznikY = 0;
ListaNaTablicy2D(int x, int y)
{
tablicaDanych = new Object[x][y];
rozmiarX = x;
rozmiarY = y;
}
public boolean add(Object obj)
{
tablicaDanych[licznikX][licznikY] = obj;
licznikX++;
if(licznikX>(rozmiarX-1)) {
licznikY++;
licznikX=0;
}
return false;
}...
A to jest moja klasa testowa:
public class KlasaTestujaca {
public static void main(String[] args) {
ListaNaTablicy2D lista = new ListaNaTablicy2D(10,10);
lista.add(new Integer(1));
lista.add(new Integer(2));
lista.add(new Integer(3));
lista.add(new Integer(4));
lista.add(new Integer(5));
lista.add(new Integer(6));
lista.add(new Integer(7));
lista.add(new Integer(8));
lista.add(new Integer(9));
lista.add(new Integer(10));
lista.add(new Integer(11));
lista.add(new Integer(12));
lista.add(new Integer(13));
for (Object obj: lista)
System.out.println(obj);
}
}
przy każdym wywołaniu wyrzuca mi wyjątek NullPointerException dla tej pętli for each :( Nie wiem o co chodzi, macie jakąś wizje?