2016-04-10 48 views
0

Ich versuche, einen Play-Namen und eine Länge für ein Theater Sitz Management-Programm hinzuzufügen. Ich möchte neue Stücke hinzufügen können, die im Theater gezeigt werden. Zur Zeit habe ich folgende für Klasse-Spiel und seine Subklassen LocalPlay und ForeignPlayNullPointerException beim Hinzufügen eines neuen Objekts zu einem Array

public class Play { 
public String name; 
public double length; 

public Play(String name, double length){ 
    this.name = name; 
    this.length = length; 
} 


public void printPlayList(){ 
    System.out.print("name = " + this.name); 
    System.out.print("length - " + this.length); 
} 

} 


class ForeignPlay extends Play{ 

public ForeignPlay(String name, double length){ 
    super(name, length); 
} 

} 

class LocalPlay extends Play{ 

public LocalPlay(String name, double length){ 
    super(name, length); 
} 

} 

Für meine Admin-Klasse (Klasse I will innerhalb der addPlay Funktion verwenden), versuche ich, neue Objekte in die Klasse hinzufügen, indem eine Schnur und doppelt. Dies ist mein Code:

public class Admin extends User{ 

private Play [] play; 
private int size = 0; 

public void addForeignPlay(String name, double length){ 
    this.play[size] = new ForeignPlay(name,length); 
    this.size++; 
} 

public void addLocalPlay(String name, double length){ 
    this.play[size] = new LocalPlay(name,length); 
    this.size++; 
} 

public void playDetails(){ 
    for(int i = 0; i < this.size; i++) 
    this.play[i].printPlayList(); 
} 

public static void main (String[] args){ 
    Admin testAdmin = new Admin(); 
    testAdmin.addLocalPlay("test", 125); 
    testAdmin.playDetails(); 
} 

} 

Wenn diese zu laufen versuchen, würde ich erwarten, eine Ausgabe von ‚Test‘ haben und 125,0. Ich bin jedoch empfängt die Fehlermeldung:

Exception in thread "main" java.lang.NullPointerException bei Admin.addLocalPlay (Admin.java:18) bei Admin.main (Admin.java:33)

Herzlichen Dank für jede Hilfe Sie

+0

initialisieren Sie sind nicht überall 'play' Array initialisiert wird, so dass es null ist .. –

+0

Mögliche Duplikat [Was ist eine Null-Zeiger-Ausnahme, und wie kann ich es beheben?] (http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) –

Antwort

1
liefern

private Play [] play; Ersetzen mit private Play [] play = new Play[10]; Ohne ein Array initialisieren Sie keinen Wert in diesem Array speichern kann

+0

Vielen Dank das hat funktioniert! –

+0

Am meisten Willkommen :). Bitte akzeptieren Sie die Antwort – Rehman

0

Anregung für Ihre Admin Klasse:

public class Admin extends User { 

    private ArrayList<Play> playList = new ArrayList<>(); 

    public void addForeignPlay(String name, double length) { 
     this.playList.add(new ForeignPlay(name, length)); 
    } 

    public void addLocalPlay(String name, double length) { 
     this.playList.add(new LocalPlay(name, length)); 
    } 

    public void playDetails() { 
     for (int i = 0; i < playList.size(); i++) { 
      this.playList.get(i).printPlayList(); 
     } 
    } 

    public static void main(String[] args) { 
     Admin testAdmin = new Admin(); 
     testAdmin.addLocalPlay("test", 125); 
     testAdmin.playDetails(); 
    } 
} 
0

In Java-Arrays ist nicht dynamisch (die Größe festgelegt ist und an seiner Schöpfung bestimmt). Wenn Sie eine dynamische Datenstruktur wünschen, sollten Sie zum Beispiel eine ArrayList verwenden.

0

Sie sollten das Spiel Variable wie

private Play [] play = new Play[100] 

oder verwenden Konstruktor

public Admin(Play[] play, int size) { 
    this.play = play; 
    this.size = size; 
} 
Verwandte Themen