Problem z Listą

0
import java.util.*;


public class Lista {

    private int [] liczby;
    private int pojemnosc;
    private int rozmiar;

    public  Lista(int ileliczby, int pojemnosc, int rozmiar)  {
        int l[]  = new int[ileliczby];
        this.pojemnosc = pojemnosc;
        this.rozmiar = rozmiar;

    }




    public  int dodajelement(int element) {
        for (int i = 0; i < rozmiar; i++) {
            if (liczby[i] <= rozmiar) {
                liczby[i] = element;
            }
             else if (liczby[i] >= rozmiar);
            System.out.println("nie możesz dodać nastepnej");

        }

        return element;
    }

    public int znajdz(int szukaj) {
        boolean liczba = false;
        for (int i = 0; i < rozmiar; i++) {
            if (liczby[i] == szukaj) {
                liczba = true;
                return i;
            }
            else if (liczba = false){
                return -1;
            }
        }
        return szukaj;
    }
    public void Pisz(){
        System.out.println("Lista:");
        System.out.println("    Pojemnosc:" +pojemnosc);
        System.out.println("    Rozmiar:" +rozmiar);
        System.out.println("    Elementy:" +liczby);

        ;
    }

    public void  usunPierwszy(int podanaliczba) {
        for (int i = 0; i < rozmiar; i++) {
            if (liczby[i] == podanaliczba) {
                liczby[i] = 0;

            }

        }

    }
    public void usunPowtorzenie() {
        for (int i = 0; i < rozmiar; i++) {
            for (int j = 0; j < rozmiar; j++) {
                if (liczby[i] == liczby[j]) {
                    liczby[i] = 0;
                }
            }
        }
    }

    public void odwroc(int liczby[]){
        int poczatek  = 0;
        int koniec = liczby.length-1;
        while (poczatek < koniec) {
            int pomoc = liczby[poczatek];
            liczby[poczatek]  = liczby[koniec];
            liczby[koniec] = pomoc;
            poczatek++;
            koniec--;

        }
    }
    



public static void main(String[] args) {
        final int N = 10;
      Lista a = new Lista(5,5,5);


      for (int i = 0; i < N/2; ++i) {
          a.dodajelement((1 << i));
      }
      a.dodajelement(2);
      a.dodajelement(8);
      a.Pisz();
      a.usunPierwszy(2);
      a.Pisz();
      for (int i = 0; i < N/2; ++i) {
        a.dodajelement( (1 << i) );
      }
      a.Pisz();
      System.out.println("Po usunięciu powtórzeń:");
      a.usunPowtorzenie();
      a.Pisz();
}
}

Błedy

Exception in thread "main" java.lang.NullPointerException
	at Lista.dodajelement(Lista.java:21)
	at Lista.main(Lista.java:96)

Nie rozumiem dlaczego wyświetlają się te błedy , czy ktoś moze mi wytlumaczyc?

1

Bo tablica liczby nie jest nigdzie zainicjalizowana.
W konstruktorze dopisz

this.liczby = new int[pojemnosc];

ps. I pisz kod po angielsku...

0

Jak wyżej, a Powiedz mi po co to w ogóle Robisz. Tworzysz interfejs listy w oparciu o stałą tablicę, to nie ma sensu!

0

Wiele błędów.
Od porównania przez jedno =
przez schrzanioną koncepcję 'pustej komórki' - dwie funkcje działają jakby 0 = puste, inne działają inaczej (czyli nie działają) Czyli błąd projektowy.
Drukowanie z funkcji uważam za błąd, jak coś należy rzucić wyjątek
Kłamiące nazwy, np usuń_pierwszy jakby kasował wszystkie itd...
Domniemanie, że sam nie jesteś pewien kiedy zwracać wartość komórki, kiedy jej indeks (i czy indeks przeskakuje puste)

Zgadzam się @lion137 co do ujawniania implementacji w interfejsie
Powołanie klasy stało się szansą na porządne programowanie obiektowe, której zupełnie nie wykorzystałeś

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