-
-
-
ma ktoś może zrobione zadanie czwarte i mógłby wspomóc klasą Spis.. mam problem przy jej stwożeniu ciągle sypie mi błędami i nie mam zielonego pojęcia czemu. mogę udostępnić jeśli ktoś chętny do szukania błędu, lub jak wyżej napisałem - przyjmę gotową klasę żeby sobie zobaczyć jak rozwiązać to co u mnie sypie błędami.
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Daj tresc zadania, wklej kod ktory juz masz i podaj kod bledu.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
wczesniej stworzona klasa osoba i student i pracownik wszystko chodzi jak powinno schody zaczynają się przy:
Cytat: | Zdefiniować klasę Spis, w której prywatnymi polami są:
Osoba tab[ ] – tablica 10 osób,
int n – aktualna ilość zapisanych elementów w tablicy
Zdefiniować konstruktor oraz metody potrzebne do wykonania następujących operacji,
które umieścić w statycznej metodzie main:
- wczytać naprzemiennie dane kilku studentów i kilku pracowników,
- wyświetlić grupę pracowników oraz osobno grupę studentów, |
a tu kod klasy spis błąd zaznaczony:
Konstruktor:
Kod: | Spis() {
Osoba tab[] = new Osoba [10];
for(int i=0; i<tab.length; i++)
if(i%2==0) tab[i]= new Student();
else tab[i]= new Pracownik();
n=tab.length;
} |
Metoda którą chce użyć na stworzonym obiekcie przez konstruktor Spis():
Kod: | void showAll(){
System.out.println("Pracownicy:");
for(int i=0;i<tab.length;i++) //tu nastepuje błąd
if(tab[i] instanceof Pracownik)
((Pracownik)tab[i]).wyswietlPracownika();
System.out.println("__________________________");
System.out.println("Studenci:");
for(int i=0;i<tab.length;i++)
if(tab[i] instanceof Student)
((Student)tab[i]).wyswietlStudenta();
} |
Kod błędu: java.lang.NullPointerException;
zdaje mi sie ze poprostu źle odwołuje się i nie wiem konkretnie jak to zrobić, gdy wkleje kod showAll() do konstruktora to chodzi, gdy próbuje to wywołać ppm myszki na stworzonym obiekcie to błąd jak wyżej.
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Na szybko obserwacja niezbyt javowym okiem: przy wypełnianiu tablicy obiektami w konstruktorze klasy Spis bardzo możliwe, że tablica powstaje pusta, lub w każdym razie jest z nią coś nie tak, a to przez użycie w warunku pętli "tab.length" - nie jestem do końca pewien, czy ta składowa klasy oznacza liczbę elementów, na ile zadeklarowano rozmiar tablicy, nawet jeśli są one null'ami, czy też może ilość aktualnie istniejących obiektów. Jeśli ten drugi wariant, to problem ma prawo powstać.
Aby sprawdzić tę moją słabą hipotezę starczy chyba zamienić tam owo "tab.length" na te 10 i się okaże.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Spis() {
tab[] = new Osoba [10];
for(int i=0; i<tab.length; i++)
if(i%2==0) tab[i]= new Student();
else tab[i]= new Pracownik();
n=tab.length;
}
Teraz powinno być lepiej.
U ciebie tab było obiektem lokalnym.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Raramir, z twoim kodem nawet nie kompiluje się.
Juzef, tab.length działa i tablica jakby jest tworzona bo mogę odrazu po utworzeniu wyswietlic jej elementy i się zgadzają. gdy zmieniam tab.length przy metodzie którą później wywołuje na obiekcie ten błąd pojawia się przy kolejnym wywołaniu tab.
tez mam bardzo niejawowe oko ktoś tu ma ratajkompilator wbudowany w głowie?
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
moim okiem to w konstruktorze Spis nie moze byc deklaracji tablicy, ponieważ po wykonaniu sie konstruktora tablica przestanie istnieć a zatem potem jak sie odwołujesz to sie odwołujesz do czegos co nie istnieje
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
gdy robię: Kod: | Osoba tab1=new Spis(n); |
Cytat: | incompatible types - found Spis but expected Osoba | jak to ominąć?
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
no bo wywołujesz konstruktor klasy Spis, a obiekt tworyzsz klasy Osoba wiec i konstruktor musi byc tej Klasy, zatem powinno byc Osoba tab1 = new Osoba(n), i nawet jesli klasa Spis dziedziczy po klasie Osoba to musisz pamiętać, że nie dziedziczy się konstruktorów.
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Maniek89, czyli rozumiem tak ze konstruktor spis jest mi po h. potrzebny tak naprawdę? i poprostu musze to co w spisie wywołać w mainie najlepiej ?
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
nie no konstruktor ten jest Ci potrzebny, tylko ze jesli chcesz z niego korzystac to musisz zrobic taki sam konstruktor w klasie Osoba, bo nie mozesz go dziedziczyć.
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
jestem chyba javoodporny bo kompletnie nie kminie ocb
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
wiesz co, ja prawdopodobnie jak do jutra wyzdrowieje i znajde czas zrobie to zadanie i wrzuce Ci gotowy kod, to sobie go przeanalizujesz i znajdziesz błąd:)
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Maniek89, byłbym wdzięczny
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
wacki4 napisał/a: | gdy robię: Kod: | Osoba tab1=new Spis(n); |
Cytat: | incompatible types - found Spis but expected Osoba | jak to ominąć? |
Rzutowaniem?
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Osoba tab1=new Spis[n];
złe nawiasy
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Szefu1989, Cytat: | incompatible types - found Spis[] but expected Osoba |
podludek, Kod: | Osoba tab1=new (Osoba)Spis[n]; |
Cytat: | <identifier> expected |
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
a nie powinno byc w studencie:
Kod: | public boolean przydzielStypendium(double prog)
{
return (obliczSrednia()>=prog)
} |
??
ah, i w toStringach klas podrzędnych warto się odwoływać do toStringa klasy nadrzędnej, a nie pisać trzy razy "nazwisko" itp
d41d8cd98f00b204e9800998ecf8427e
-
-
-
no to chyba juz kwestia interpretacji, moim zdaniem funkcja przydziel stypendium powinna sprwadzac czy srednia dla studenta przekracza próg i wtedy ustawiac pole stypendium na true:) a co do drugiej uwagi to w sumie racja:) poprawie to jak znajde chwilke:)
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
ok, wrzucilem juz z poprawionymi błędami w kodzie i dodałem komentarze,
tutaj macie link http://3paste.com/s/24r do klasy Spis, gdyż tamtej nie dalo sie wyedytowac z blizej nieokreślonych powodów. Pozostałe linki są sprawne i prowadza do juz poprawionych kodów. No to tyle:) pozdrawiam.
P.S. w miare możliwosci postaram sie robic te zadania na laborki w miare wczesnie tak zeby wszyscy mogli z nich korzystać. Pozdro
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Hej! Ja za pomoga pani Suszko zrobilem Studenta troche inaczej :
http://3paste.com/s/111
ale niestety zawsze mi wychodzi ze niema stypendium. czy ktos moze mi powiedzic gdzie mam blad?
_________________ Nadaje sie do wszystko oproc programowania
d41d8cd98f00b204e9800998ecf8427e
-
-
-
no ale probowales stworzyc obiekt tej klasy i uzyc metody przydziel stypendium? powinno dzialac
_________________ Gdyby budowlańcy tak budowali budynki, jak informatycy piszą swoje programy, to jeden dzięcioł załatwiłby całą cywilizację.
d41d8cd98f00b204e9800998ecf8427e
-
-
-
dziala
_________________ Nadaje sie do wszystko oproc programowania
d41d8cd98f00b204e9800998ecf8427e
Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014 Strona wygenerowana w 30,7ms. Zapytań do SQL: 17
|