# StandardKonstruktor ohne Parameter - nullPointerExeption!



## Rudi_123 (31. Mai 2015)

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:


```
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


----------



## Saheeda (31. Mai 2015)

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


----------



## Rudi_123 (31. Mai 2015)

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 (31. Mai 2015)

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


----------



## InfectedBytes (31. Mai 2015)

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 (31. Mai 2015)

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 (31. Mai 2015)

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 (31. Mai 2015)

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


----------



## Tom299 (1. Jun 2015)

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 (1. Jun 2015)

Schau dir vielleicht mal den Scanner an:

```
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.


----------

