Anzeige:
Ergebnis 1 bis 15 von 16

Thema: Problem: Nullpointerexecption

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    27.12.2002
    Ort
    Augsburg
    Beiträge
    47

    Problem: Nullpointerexecption

    Sorry aber mir ist erstmal kein besserer Threadtitel eingefallen und zweitens ist das Problem wohl eh ganz leicht zu lösen:
    Ich hab 2 Javaklassen, die eine erbst von der andren. die Oberklasse hat aber gleichzeitig ein ArrayObjekt der Unterklasse als Bestandteil.

    Hier mal der Code:
    Code:
    package blatt3aufgabe3;
    
    public class Publikation extends Projekt {
        
        public String Titel, Inhalt, Datum;
        public Autor[] autor;
        
        /** Creates a new instance of Publikation */
        public Publikation(){}
        
        
        public Publikation(String titel, String inhalt, String datum) {
            this.Titel = titel; this.Inhalt = inhalt; this.Datum = datum;
        }
        
        public Publikation(String titel, String inhalt) {
            this.Titel = titel; this.Inhalt = inhalt; 
        }
        
        public Publikation(String titel) {
            this.Titel = titel;
        }
    
     public static void main(String[] args) {
            Publikation pub = new Publikation("Saudummertitel", "blablabla", "31.02.2005");
            pub.autor[0] = new Autor("Nachname", "Vorname", "1.1.1111");
        }
    }
    Und die Unterklasse davon:

    Code:
    package blatt3aufgabe3;
    
    /**
     *
     * @author martin
     */
    public class Autor extends Publikation {
        
        public String Name, Vorname, Geburtsdatum;
        
        /** Creates a new instance of Autor */
        
        public Autor(String name, String vorname, String geburtsdatum) {
            super();
            this.Name = name;
            this.Vorname = vorname;
            this.Geburtsdatum = geburtsdatum;
        }
        
        public String toString() {
            return new String("Name: "+this.Name+" Vorname: "+this.Vorname+" Geburtsdatum: "+this.Geburtsdatum);
        }
        
    }
    Wenn ich das ganze aber jetz versuche laufen zu lassen erhalte ich immer:
    Exception in thread "main" java.lang.NullPointerException
    at blatt3aufgabe3.Publikation.main(Publikation.java:4 1)
    Java Result: 1
    Das ist die zeile mit pub.autor[0] = ....

    Wen nich das Array weglasse und ein einzelnes Objekt nehme würde es gehen...
    Was hab ich falsch gemacht?

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von Reaper
    Wen nich das Array weglasse und ein einzelnes Objekt nehme würde es gehen...
    Was hab ich falsch gemacht?
    Das Array gibt es noch nicht

    D.h. es fehlt ein
    Code:
    new Autor[anzahl];
    Übrigens solltest du vielleicht nochmal über deine Ableitungshierachie nachdenken, ein Autor ist normalerweise keine Publikation

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Du musst erst ein Array der gewünschten Grösse anlegen.
    public Autor[] autor; ist nur erst eine Referenz (auch Pointer genannt falls dir das mehr sagt) - da ist noch kein Speicher reserviert für das Ding. Das musst du erst noch selber machen wie hier

    Hmm, zweiter.

    MfG Peschmä
    Geändert von peschmae (06-05-2005 um 18:51 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer
    Registriert seit
    27.12.2002
    Ort
    Augsburg
    Beiträge
    47
    Hmm OK. Pointer sagt mir was Hab an menchen Stellen nur etwas schwierigkeiten mit Java und der Objektorientierung... schon ewig nimmer gemacht.
    Aber da gehört eigentlich noch ein Array hinzu, das soll eine unendliche Größe haben, wie geht dann das?

    Die Hierarchie ist so gedacht weil eine Publikation mehrere Autoren hat.
    Soll die Implementierung eines UML Diagrams sein (langweiles info grundstudium zeug...): Autor (1 bis5) arbeitet an Publikation, Publ. referiert auf Publ. und Publ. gehört zu 1 Projekt.

    Hat jmd ne andre Idee wie man sowas aufbauen sollte?
    Geändert von Reaper (06-05-2005 um 20:09 Uhr)

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von Reaper
    Aber da gehört eigentlich noch ein Array hinzu, das soll eine unendliche Größe haben, wie geht dann das?
    Nö, nix da unendlich, das gibts nur in Mathematik. Ausser unendlich doof (nee, ich meine nicht dich )

    Arrays haben eine fixe Grösse die du am Anfang beim erstellen angeben musst. Container mit veränderbarer Grösse (quasi Unendlich falls du etwa 2*Unendlich viel Arbeitsspeicher hast) wäre z.B. die ArrayList
    Die verwendet intern Arrays und kopiert die Inhalte in ein neu angelegtes, grösseres um, wenn der Platz nicht mehr ausreicht.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer
    Registriert seit
    27.12.2002
    Ort
    Augsburg
    Beiträge
    47
    Ich werd das Array vollstopfen bis /dev/urandom keine Zeichen mehr hergibt
    OK ich glaub ArrayList hab ich überlesen in meinem JAva Buch... kommt davon.
    In C ging das doch mit nem normalen Array wie PHP wenn ich mich richtig erinnere.
    Hab grad die Lösungen von der spaßigen Aufgabe gesehen... Vector...
    Aber war trotzdem gut zu Wissen.

    @anda_skoa: Ja war so gedacht daß eine Publikation mehrere Autoren haben soll. Das extends ist hier irgendwie echt total überflüssig, eine Klassenvariable sollte reichen.
    Geändert von Reaper (06-05-2005 um 22:22 Uhr)

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von Reaper
    In C ging das doch mit nem normalen Array wie PHP wenn ich mich richtig erinnere.
    Jein. In C kannst du die grösse von Arrays auch nicht ändern - eher sogar noch etwas weniger als bei Java (muss zur kompilierzeit konstant sein - zumindest bei statischen-globalen Arrays sogar noch bei C99 blabla )

    Aber wenn du den Speicherplatz mit malloc anforderst kannst du das dann natürlich mit realloc vergrössern/verkleinern (am Ende).

    Hab grad die Lösungen von der spaßigen Aufgabe gesehen... Vector...
    Aber war trotzdem gut zu Wissen.
    Vector ist auch ok. Macht dasselbe wie ArrayList - letztere ist nur etwas moderner (und implementiert das List-Interface, d.h. man kann sie einfach gegen eine LinkedList austauschen (wobei die fast immer langsamer ist - lohnt sich also nicht das zu machen)).

    Vector ist mittlerweile intern via eine ArrayList implementiert - also eigentlich overhead da das Ding zu benutzen und nicht direkt die ArrayList. Aber das ist ein Detail ;-)

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Soweit ich weiß ist der wesentliche Unterschied zwischen Vector und ArrayList, daß die Methoden des Vector synchronized sind.


    Zitat Zitat von Reaper
    Das extends ist hier irgendwie echt total überflüssig, eine Klassenvariable sollte reichen.
    Seh ich auch so.
    Ableitung kann im ersten Augenblick einfach praktisch aussehen, aber ist dann fast immer zu einem späteren Zeitpunkt problematisch.
    Auch wenn das Projekt keine wichtige Sache ist, sollte man sich erst gar nicht angewöhnen so zu arbeiten

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von Reaper
    Die Hierarchie ist so gedacht weil eine Publikation mehrere Autoren hat.
    Das ist ja schön und gut, aber warum sollte ein Autor eine Publikation sein.
    Normalerweise sind Autoren Personen oder vielleicht noch Institutionen.

    Die Idee, dass ein Autor die Publikation seiner Eltern ist, dehnt den Begriff Publikation schon ziemlich.

    Ich hätte eher vermutete, daß ein Autor mehrere Publikationen haben kann, bzw. eine Publikation mehrere Autoren.

    Aber vielleicht steckt dahinter ja noch eine höherer Idee, die mir nicht zugänglich ist?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •