Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hab noch ein Problem. In meiner SetMethode passen die Operatoren einfach nicht und ich bekomme sie seit ner Stunde nicht richtig gestellt.
Ich würde gerne den Namen setzen wenn der eingelesene wert nicht "null" also nix und nicht kleiner als 2 is. Ansonsten soll der Name Gans gesetzt werden. n ist eine statische Zählervariable und funktioniert. Aber die Unterscheidung klappt nicht. Meistens sind alle Einagen richtig oder alle falsch.
???:L
Java:
public void setName(String name) {
if (!validateName()) {
this.name = name;
}
if (validateName()) {
System.out.println("Gib das nächste mal bitte deinen richtigen Namen ein!");
this.name = "Gans" + n;
System.out.println("Dein Name ist für dieses Spiel Gans" + n + "!");
++n;
}
}
public boolean validateName() {
return ((name == null) && (name.length() < 2));
}
Soll ja für beide Fälle klappen, null ODER länge unter 2
edit: woher bekommt validateName() eigentlich die Variable "name" ? In der Methode drüber scheinst du diesen ja noch übergeben zu müssen?! Heisst:
Java:
public void setName(String name) {
if (!validateName(name)) {
this.name = name;
}
if (validateName(name)) {
System.out.println("Gib das nächste mal bitte deinen richtigen Namen ein!");
this.name = "Gans" + n;
System.out.println("Dein Name ist für dieses Spiel Gans" + n + "!");
++n;
}
}
public boolean validateName(String name) {
return ((name == null) && (name.length() < 2));
}
im letzten Codeschnipsel soll natürlich das && wieder durch || ersetzt werden!
Wenn er dich nicht gleich schon einen Syntax Fehler gibt, muss das name ja irgendwo herkommen? Sei vorsichtig, dass du globale mit lokalen Variablen nicht durcheinanderbringst.
Warum nimmst du eigentlich kein else in setName?
Java:
public void setName(String name) {
if (!validateName(name)) {
this.name = name;
}
else{
System.out.println("Gib das nächste mal bitte deinen richtigen Namen ein!");
this.name = "Gans" + n;
System.out.println("Dein Name ist für dieses Spiel Gans" + n + "!");
++n;
}
}
public boolean validateName(String name) {
return ((name == null) || (name.length() < 2));
}
Klappt! Hab aber hier nochmal ein ähnliches Problemm. alter soll zw 0 und 99 gesetzt werden.
Hier bekomme ich nen fehler wenn ich bei der ersten if die Variable lebensAlter als Parameter mit in die Klammer schreiben will.
Java:
public void setLebensAlter(int lebensAlter) {
if (!validateLebensAlter()) {
this.lebensAlter = lebensAlter;
}
else{
System.out.println("Gib das nächste mal bitte dein richtiges Alter an!");
this.lebensAlter = 99;
System.out.println("Du würfelst als letzter!");
}
}
public boolean validateLebensAlter() {
return ((lebensAlter <= 0) || (lebensAlter >= 99));
}
Nur nochmal ne allgemeine Frage zu getter und settern (des mit final und Konstruktor is sehr praktisch!), dekliniere ich setter/getter auch für Variablen die nur in der eigenen Klasse benutzt werden oder dekliniere ich setter wenn auf diese von anderen Klassen eigenlich nur zugegriffen wird? am besten lass ich sie der Übersichtlichkeitsweise wenn ich sie nicht aufrufe gleich weg oder?
Üblicherweise erstellt man nur getter und setter für Dinge, die "nach draußen" gegeben werden. Und auch wirklich nur das, was man braucht, d.h. oft nur getter aber keine setter (für "read only"). IN der Klasse verwendet man die Variablen direkt. Es könnte theoretisch Vorteile haben, wenn man IMMER getter und setter verwendet (also tatsächlich auch private getter und setter!) aber das ist ... ziemlich praxisfern...