• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Java przypisanie nazw obiektom z tablicy. problem

Ultraszybki serwer VPS NVMe START
0 głosów
63 wizyt
pytanie zadane 12 września w Java przez Luryxyt Użytkownik (870 p.)
zamknięte 13 września przez Luryxyt

Mam problem. Zrobiłem tablice obiektów, i chce im w pentli przypisać "name", za pomocą metody setName. Tylko wyskakuje mi error. "Exception in thread "main" java.lang.NullPointerException at Main.main" i nw gdzie jest błąd. Poniżej kawałek kodu.

 

    public static kanaly[] tvp = new kanaly[9]; //tablica obiektow
public String name[] =  new String[9]; //tablica nazw

for(int i=0; i<9; i++) { 
            tvp[i].setName("Tvp" + i, i);  //pentla przypisywania nazwy
        }

public void setName(String name, int n) { //metoda przypisywania nazwy
        this.name[n] = name;
    }

 

komentarz zamknięcia: Rozwiazany

3 odpowiedzi

+1 głos
odpowiedź 12 września przez Tomasz90 Pasjonat (15,980 p.)
wybrane 13 września przez Luryxyt
 
Najlepsza
Jak zrobisz tablicę obiektów to musisz je utworzyć, czyli przed setName w pętli należy wywolac konstruktor bo inaczej na nullowej referencji wywolujesz setName
komentarz 12 września przez Luryxyt Użytkownik (870 p.)
Nie rozumiem zbytnio. świeży w temacie jestem. Jak robiłem pojedyncze obiekty to nie potrzebowałem konstruktora. Jakbyś mógł podać przykład jak ten konstruktor ma wyglądać.
komentarz 12 września przez Tomasz90 Pasjonat (15,980 p.)

nie wiem jak ta Twoja klasa kanały wygląda ale załóżmy, że masz coś takiego:

class Person {
  private int age;
}

\\i załóżmy że gdzieś w kodzie tworzysz tablicę:

Person[] people = new Person[10];
\\i chcesz wypełnić wartość age dla każdej osoby:

for(int i = 0;i < 10;i++) {
   people[i] = new Person();
   people[i].setAge(i);
}

 

0 głosów
odpowiedź 12 września przez Wiciorny Pasjonat (24,160 p.)

Nie działa, bo jak kolega zauważył wcześniej nie tworzysz instancji  klasy String dla tablicy, a odwołujesz się w metodzie do "this", a this-  działa na rzecz czegoś... traktując to co przyjdzie jako obiekt z pewnym zestawem danych, w tym momencie program nie wiem czym jest this.

Ewentualnie musiałbyś wywołać metoda w taki sposób   ( uwaga, jest to tylko przykład zależny od implementacji będzie inaczej wyglądal )



obiekt.setName( tutaj parametry );


wcześniej tworzysz obiekt ...  np jako obiekt całej klasy lub konkretny który Cię interesuje. 

 

0 głosów
odpowiedź 13 września przez adas94 Pasjonat (22,640 p.)
W dużym skrócie i najprościej rzecz ujmując to tak :

Tworzysz tablicę tvp o pojemności 9, która jest pusta (nic w niej nie ma poza miejscem na obiekty, domyślnie to zdaje się tablica wypełniona wartościami null).

Tworzysz pętlę w której odwołujesz się do kolejnych kanałów w tablicy (których w niej nie ma, bo tablica jest pusta) i próbujesz ustawić pole name czemuś czego nie ma w tej tablicy. Dlatego zwracany jest błąd NullPointerException.

Podobne pytania

0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 20 października 2016 w Java przez Patryk Rafał Bywalec (2,420 p.)
0 głosów
0 odpowiedzi 42 wizyt
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 14 sierpnia w Java przez Patryk Kirszenstein Użytkownik (950 p.)

41,475 zapytań

80,496 odpowiedzi

159,288 komentarzy

19,796 pasjonatów

Przeglądających: 306
Pasjonatów: 19 Gości: 287

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...