Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki 1 do 10 z 19

Temat: Eclipse simple

  1. #1

    Domyślnie Eclipse simple

    Mam taki kod wprowadzony w Eclipse:

    ------------------------------------------------------------
    public class Car {

    int wersja;
    int rok;
    int maxspeed;


    public static void main(String[] args) {

    Car[] iCar = new Car[2];

    iCar[1].wersja = 7;

    System.out.println("lol");

    }//do main

    }//do class
    ------------------------------------------------------------


    Jak próbuję go kompilować to pojawia się komunikat:

    Exception in thread "main" java.lang.NullPointerException
    at Car.main(Car.java:12)


    Jak wyrzucę linijkę:
    iCar[1].wersja = 7;
    to wypisywane jest słowo lol. Może mi ktoś powiedzieć co jest nie tak z powyższą linijką i dlaczego kompilator ją traktuje jako błąd ?

  2. #2

    Domyślnie

    Nie stworzyles zadngo obiektu klasy Car?
    Najpierw stworz obiekt w Twoim wypadku uzywasz domyslnego konstruktora ktory nie ustawia niczego.
    Wiec pozniej musisz pojedynczo ustawic pola obiektu na jakies wartosci.
    Pozatym dziwny konstrukt tam masz.
    Od kiedy obiekty trzyma sie w prymitywnej tablicy?
    Nie lepiej skorzystac z interfejsu List<Car>?
    Ja to widze raczej tak:
    Kod:
    public class Car {
    
    int wersja;
    int rok;
    int maxspeed;
    
    public Car(){}Pusty konstruktor
    public Car(int wersja, int rok, int maxspeed)
    {
       this.wersja = wersja;
       this.rok = rok;
       this.maxspeed = maxspeed;
    }
    
    
    public static void main(String[] args) {
    
    List<Car> samochody = new ArrayList<Car>();
    samochody.add(new Car(1,1998,160));
    
    }//do main
    
    }//do class
    Podsumowujac:
    Stworzyles tablice ok
    Pozniej chciale odniesc sie do drugiego indexu tablicy jakby zawierala obiekt i ustawic pole tego obiektu na 7.
    Problem w tym ze stworzyles tylko tablice z taka a nie inna nazwa i rozmiarem. Ona jest pusta. Najpierw musialbys stworzyc obiekt a pozniej przypisac go do indeksu twojej tablicy.
    Pozatym jesli chcesz miec tablice zlozona z obiektow klasy Car radzilbym uzywac bardziej zlozonych struktur.
    Wyobraz sobie ze pozniej bedziesz mial dziedziczenie albo Car zamienisz na abstract Class a z tej klasy beda dziedziczyly inne sub-klasy wtedy nie bedziesz mogl trzymac tych dwoch "roznych" w jednej tablicy...
    Ostatnio edytowane przez szymkraw : 08-17-2014 - 13:18

  3. #3

    Domyślnie

    Cytat Napisał szymkraw Zobacz post
    Nie stworzyles zadngo obiektu klasy Car?
    Najpierw stworz obiekt w Twoim wypadku(...)
    Dziękuję za odpowiedź, ale jak to nie stworzyłem obiektu klasy Car ? a to co to jest ?
    Car[] iCar = new Car[2];

    Obiekt to inaczej kopia klasy Car...zresztą najdziwniejsze jest to, ze to przykład przepisany z książki: )

  4. #4

    Domyślnie

    Teraz to trozke zakreciles .
    Chcesz stworzyc generic Array ktora bedzie sie skladac z obiektow klasy Car?
    Czy chcesz poprostu stworzyc obiekt klasy Car i wlozyc go do ArrayList?

    To co zrobiles to stworzyles generic array typu Car. iCar przechowuje obiekty typu Car ale nie jest obiektem Car somo w sobie a jest zwykla tablica.
    Powiedz czemu chciales zrobic to w taki sposob?

    Tutaj masz kod jak to powinno wygladac (Twoim sposobem)
    Kod:
    public class Car {
    
    int wersja;
    int rok;
    int maxspeed;
    
    
    public static void main(String[] args) {
    
    Car[] iCar = new Car[2];
    Car car1 = new Car();
    car1.rok = 1997;
    iCar[0] = car1;
    
    System.out.println(iCar[0].rok);
    
    }//do main
    
    }//do class
    Wczesniej miales null pointer exception bo probowales sie odniesc do obiektu w tablicy ktorego tam zwyczajnie nie bylo.
    I nie Car[] iCar = new Car[2] to wcale nie obiekt klasy. Jak juz wspominalem tworzysz generic array typu Car o dlugosci 2.
    Uzyj debuggera i sam zobaczysz
    Ostatnio edytowane przez szymkraw : 08-18-2014 - 16:51

  5. #5

    Domyślnie

    Cytat Napisał szymkraw Zobacz post
    Powiedz czemu chciales zrobic to w taki sposob?
    W zasadzie to nie ja. Muszę się przekwalifikować z Delphi na Jave i dopiero się jej uczę. Podany przykład pochodzi z książki:

    O'Reilly "Rusz głową, Java!" Cathy Sierra, Bert Bates. (jakby co służę też numerem strony)

    Niektóre przykłady nie chcą się kompilować chyba to nie jest profesjonalna pozycja: )

  6. #6

    Domyślnie

    Hmm a wydanie z jakiego roku?
    Jesli oni tam uzywali antycznego JDK to moze i kiedys dzialalo.
    Teraz mamy 1.8 czyli Java 8.
    Wejdz sobie na strone oracle maja tam tutoriale od podstaw az po watki w client-server apps.

    Ksiazke Ci zadnej nie polece uczylem sie z internetu ale ksiazka od C# tak samo Ci sie przyda te jezyki wygladaja w 90% tak samo.

    Tez zalezy jakie zastosowanie Javy Cie interesuje.

  7. #7

    Domyślnie

    Helion SA 2011 niby xD

  8. #8

    Domyślnie

    Moze oni sa na wyzszym poziomie abstrakcji niz ja...
    Nie wiem moze chodzilo im o cos innego albo jestem laikiem xD

  9. #9

    Domyślnie

    Oczywiście że w pierwszym programie jest błąd. Tworzysz tablicę obiektów o wielkości 2.
    potem chcesz coś tam wpisać , ale w tej tablicy nie ma jeszcze obiektów. Zatem tam brakuje czegoś takiego:
    Kod:
    Car car0 = new Car();
    Car car1 = new Car();

    i teraz:

    Kod:
    Car[] iCar = new Car[2];
    iCar[0] = car0;
    iCar[1] = car1;
    iCar[1].wersja = 7;
    A co do pozycji to polecam java techniki zaawansowane - ale jak podstawy opanujesz. A ta książkę która masz oddaj potrzebującym. ps : zapotrzebowanie na delphi spadło ?
    Ostatnio edytowane przez Exc0mmunion : 09-01-2014 - 19:59

  10. #10

    Domyślnie płace

    Witam, jestem Studentem i chciałbym się nauczyć Javy. Jak wysokie mogą być moje płace ?

Strona 1 z 2 12 OstatniOstatni

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj