StandardKonstruktor ohne Parameter - nullPointerExeption!

Rudi_123

Mitglied
Hallo,

ich benötige dringend Hilfe!
Muss bis morgen eine Aufgabe einreichen und weiß nicht weiter.. folgender Hintergrund:

habe mehrere Klassen in einem Package, die stimmen bislang (meldet zumindest das System bei dem ich die Aufgabe einreiche); nun ist in einem zweiten Package die eigentliche Aufgabe; hier importiere ich die Klassen aus dem anderen Package, das passt soweit. Als Vorgabe heißt es in der Aufgabenstellung:
"die Initialisierung der Aufgabe muss ausschließlich in deren Standardkontruktor erfolgen"; dieser ist ohne Attribute angegeben.

Und jetzt mein Dilemma: egal was ich in diesen Standardkonstruktor schreibe ich erhalte eine NullPointerExeption und verstehe nicht, wie ich das umgehen kann :(

Mein Code:

Java:
import geometrie.Kreis;
import geometrie.Quader;
import geometrie.Rechteck;
import geometrie.Zylinder;

public class Aufgabe {

  private Rechteck r;
  private Kreis k1;
  private Kreis k2;
  private Kreis k3;
  private Quader q;
  private Zylinder z1;
  private Zylinder z2;
  private Zylinder z3;

  public Aufgabe() {
    //was muss ich hier tun??
  }

  public double umfang() {
    return (2 * r.getLaenge()) + (k1.umfang() / 2) + k2.umfang() + 20;
  }

  public double innererMantel() {
    return q.oberflaeche() - r.flaeche() + z1.oberflaeche() / 2 - k1.flaeche() / 2 + z2.oberflaeche() / 2 - k2.flaeche() / 2 + z3.oberflaeche() / 2 - k3.flaeche() / 2;

  }

  public Quader getQ() {
    return q;
  }

  public Zylinder getZ1() {
    return z1;
  }

  public Zylinder getZ2() {
    return z2;
  }

  public Zylinder getZ3() {
    return z3;
  }
}


Ich wäre sehr dankbar, wenn mir jemand helfen könnte!

Danke und Grüße
Rudi
 
Zuletzt bearbeitet:

Saheeda

Top Contributor
Kreis, Rechteck etc. sind zwar deklariert, aber nicht initialisiert. Im Aufgaben-Konstruktor sollte überall r = new Rechteck() etc. stehen.
 

Rudi_123

Mitglied
Danke!
Was mache ich aber, wenn ich noch nicht alle Werte habe? In dem Fall zB müsste ich für das Rechteck den Konstruktor new Rechteck(Punkt,b,l) verwenden, aber ich habe ja weder den Punkt, noch Breite noch Länge. Wenn ich diese Werte nun allerdings mit =1 initialisiere krieg ich zwar diese Exeption nicht mehr, aber die errechneten Ergebnisse sind schlichtweg falsch..
 

stg

Top Contributor
Ohne die genaue Aufgabenstellung zu kennen bleibt das hier einfach nur ein nicht-zielführendes Ratespiel.
 

InfectedBytes

Top Contributor
Wir kennen deine Aufgabenstellung nicht, daher können wir gerade nur etwas raten.
Vielleicht sollst du innerhalb dieses Konstruktors die Werte vom Benutzer einlesen?
 

Rudi_123

Mitglied
Die Aufgabe ist so lang, ich weiß nicht wie ich sie für das Forum hier in Kürze beschreiben soll.. sorry!


Aber bezügl. der Werte vom Benutzer einlesen, wie meinst du das?
 

Saheeda

Top Contributor
Du kannst auch einfach alles einstellen und sagen, welche Teile aktuell bearbeitet werden müssen.
Fakt ist, dass die Seitenlängen, whatever irgendwo herkommen müssen. Sonst ist die ganze Aufgabe sinnlos.
 

strußi

Top Contributor
die frage ist, wie/woher bekommst du die Werte für dein Rechteck oder die anderen figuren, die Parameter zur erstellung benötigen?
 

Tom299

Bekanntes Mitglied
Man könnte die Aufgabenstellung evtl. auch so deuten, daß du den Standardkonstruktor, der ohne Attribute angegeben ist, ändern sollst. Sonst würde da eher anzugeben stehen anstatt angegeben.
Ansonsten kann man die Elemente gar nicht initialisieren, es sei denn, es gibt irgendwo in deiner Aufgabenstellung Default-Werte für alle Elemente.
 

InfectedBytes

Top Contributor
Schau dir vielleicht mal den Scanner an:
Java:
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
//...
scanner.close();

Vielleicht sollst du ja innerhalb des Konstruktors die Werte einlesen. Das kannst du z.B. mit dem Scanner machen.
 

Neue Themen


Oben