Konstruktor ohne Übergabe eines Wertes

Marmy

Mitglied
Hallihallo,

also ich habe eine Aufgabe zu bearbeiten wo zwei Konstruktoren gefragt sind und für den zweiten Konstruktor ist geschrieben:
" Falls ein negativer Wert für count übergeben wird, soll count auf 0 gesetzt werden. Da wir später einige WordCount-Objekte mit count = 0 benötigen, wird ein zweiter Konstruktor ohne Übergabe eines Wertes für count benötigt."

Meine Frage ist jetzt, ob das ein default konstrukor ist, oder ob ich das so schreiben müsste
[CODE lang="java" highlight="10"]
public class WordCount {
private String word;
private int count;

public WordCount(String word, int count){
this.word=word;
this.count = count;
}
public WordCount(int count){
this.count = 0;
}
}[/CODE]

Bitte seid nachsichtig mit mir. Ich bin ein kompletter Anfänger was das Programmieren betrifft. :)
LG Marmy
 

Wuast

Bekanntes Mitglied
Kann man die if-Abfrage nicht im Anschluss bringen nach dem Konstruktor? Also einfach
Java:
    public WordCount(int count){
        this.count = 0;
        
        if (count<0){
            count = 0;
        }
🤔 aber nicht, dass ich jetzt Falsches erzähle
 
K

kneitzel

Gast
Also erst einmal zu der Aufgabe:
Falls ein negativer Wert für count übergeben wird, soll count auf 0 gesetzt werden.
Das dürfte sich auf den bereits vorhandenen Konstruktor beziehen.
Da wir später einige WordCount-Objekte mit count = 0 benötigen, wird ein zweiter Konstruktor ohne Übergabe eines Wertes für count benötigt.
Hier wird dann gesagt, dass ein weiterer Konstruktor angelegt werden soll, ohne Angabe eines Wertes für count, d.h. der Parameter Count soll entfallen. Dann erhält man:
public WordCount(String word, int count)
(Das Durchgestrichene muss dann natürlich entfallen - das dient hier nur zur visualisierung)

Bezüglich Deines Ansatzes (der in den anderen Konstruktor gehören würde):
Überlege Dir Deinen Code noch einmal. In der ersten Zeile greifst Du auf die Instanzvariable zu und setzt diese auf 0.
In den Zeilen 4 und 5 greifst Du nur auf den Parameter zu.
Damit setzt Du nie den Wert der Instanzvariable auf den übergebenen Parameter.

Du hattest ja schon an Code:
Java:
public WordCount(String word, int count){
    this.word=word;
    this.count = count;
}

Du musst Dir also noch einmal überlegen, was denn genau passieren soll mit der Instanzvariable count.
Im ersten Schritt würde ich das immer sprachlich formulieren:
Wenn .... dann .... sonst ...
In der Regel kann man das dann 1:1 übersetzen in Java Code.

Meine Frage ist jetzt, ob das ein default konstrukor ist
Nein, der Default Konstruktor ist der Konstruktor, der automatisch angelegt wird, wenn kein anderer Konstruktor da ist.
Wenn so ein Konstruktor gewünscht ist, wenn auch andere Konstruktoren existieren, dann ist dieser explizit anzugeben. In dem Fall spricht man aber dann nicht mehr von default Konstruktor.
 

Neumi5694

Top Contributor
Kann man die if-Abfrage nicht im Anschluss bringen nach dem Konstruktor? Also einfach
Java:
    public WordCount(int count){
        this.count = 0;
      
        if (count<0){
            count = 0; //hier setzt du nicht die Klasenvariable
        }
🤔 aber nicht, dass ich jetzt Falsches erzähle
Könnte man, allerdings steht sie bei dir noch im Konstruktor. Die Frage ist halt, ob es sinnvoll ist, einen ungültigen Wert mit sich rumzuschleppen. Ich empfehle, den Wert schon im Konstruktor zu korrigieren.
ps: Da deine lokale Variable den gleichen Namen hat wie die Klassenvariable, musst du noch "this" dazuschreiben. Du änderst in der Abfrage nämlich nicht die Klassenvariable, sondern den Wert der lokalen, von außen übergebenen Variable.

Java:
public WordCount(int count){
  if (count < 0) { //Musterlösung, hier etwas over the top, geht auch mit weniger Code.
      this.count = 0;
  } else {
      this.count = count;
  }
}
//oder
public WordCount(int count){
  this.count = count < 0 ? 0 : count; // Falls die Bedinung vor "?" zutrifft, wird der Wert vor ":" geliefert, ansonsten der danach.
}
//oder
public WordCount(int count){
  this.count = Math.max(0, count); // Der größere der beiden Werte wird geliefert, was 0 entspricht, falls count < 0
}
 

Marmy

Mitglied
Also erst einmal zu der Aufgabe:

Das dürfte sich auf den bereits vorhandenen Konstruktor beziehen.

Hier wird dann gesagt, dass ein weiterer Konstruktor angelegt werden soll, ohne Angabe eines Wertes für count, d.h. der Parameter Count soll entfallen. Dann erhält man:
public WordCount(String word, int count)
(Das Durchgestrichene muss dann natürlich entfallen - das dient hier nur zur visualisierung)

Bezüglich Deines Ansatzes (der in den anderen Konstruktor gehören würde):
Überlege Dir Deinen Code noch einmal. In der ersten Zeile greifst Du auf die Instanzvariable zu und setzt diese auf 0.
In den Zeilen 4 und 5 greifst Du nur auf den Parameter zu.
Damit setzt Du nie den Wert der Instanzvariable auf den übergebenen Parameter.

Du hattest ja schon an Code:
Java:
public WordCount(String word, int count){
    this.word=word;
    this.count = count;
}

Du musst Dir also noch einmal überlegen, was denn genau passieren soll mit der Instanzvariable count.
Im ersten Schritt würde ich das immer sprachlich formulieren:
Wenn .... dann .... sonst ...
In der Regel kann man das dann 1:1 übersetzen in Java Code.


Nein, der Default Konstruktor ist der Konstruktor, der automatisch angelegt wird, wenn kein anderer Konstruktor da ist.
Wenn so ein Konstruktor gewünscht ist, wenn auch andere Konstruktoren existieren, dann ist dieser explizit anzugeben. In dem Fall spricht man aber dann nicht mehr von default Konstruktor.
Hallo vielen Dank erstmal :)
habe ich das richtig verstanden wenn ich für den zweiten konstruktor das so schreibe

Java:
public WordCount(String word) {
        this.word= word;
        this.count = 0;
    }

LG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
M Vererben von Superklasse ohne Konstruktor Java Basics - Anfänger-Themen 9
T Konstruktor mit oder ohne public-Bezeichner? Java Basics - Anfänger-Themen 4
A Konstruktor ohne Parameter Java Basics - Anfänger-Themen 15
G Mit oder ohne Konstruktor ? Java Basics - Anfänger-Themen 13
T paint() ohne konstruktor aufzurufen? Java Basics - Anfänger-Themen 5
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
B Konstruktor Problem Java Basics - Anfänger-Themen 8
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
O Konstruktor und Default Konstruktor Java Basics - Anfänger-Themen 7
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
I Vererbung Frage zum Konstruktor Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
P Konstruktor Java Basics - Anfänger-Themen 4
E Initialisierung von Attributen und Konstruktor Java Basics - Anfänger-Themen 0
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
llabusch Vererbung Super Konstruktor Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben