• 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

Object Storage Arubacloud
0 głosów
363 wizyt
pytanie zadane 12 września 2017 w Java przez Luryxyt Użytkownik (870 p.)
zamknięte 13 września 2017 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 2017 przez Tomasz90 Nałogowiec (25,140 p.)
wybrane 13 września 2017 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 2017 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 2017 przez Tomasz90 Nałogowiec (25,140 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 2017 przez Wiciorny Ekspert (269,710 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 2017 przez adas94 Nałogowiec (29,200 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
0 odpowiedzi 145 wizyt
pytanie zadane 14 grudnia 2017 w Java przez Ohnne Nowicjusz (180 p.)
0 głosów
4 odpowiedzi 214 wizyt
pytanie zadane 3 maja 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 1,253 wizyt
pytanie zadane 20 października 2016 w Java przez Patryk Rafał Bywalec (2,700 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...