Attribute darf nur Werte vom Intervall annehmen

Sophie.H

Mitglied
Hallo,

mein Attribut Zinssatz soll nur Werte innerhalb des Intervalls {0,1} annehmen und gleich nach der Initialisierung den Wert 0.05 besitzen.

Java:
private double [] Zinssatz = {0,1};
this.Zinssatz = 0,05;

hätte gedacht, dass es so geht.... tuts aber nicht. Kann mir bitte jemand sagen, wie ich ein Intervall festlege und das Attribut dann nur diese Werte annehmen kann?

Vielen Dank für die Hilfe
 
Ein Array soll es bestimmt nicht werden. Du kannst in der Setter Methode den Wert überprüfen, und falls es nicht im Intervall liegt eine Exception schmeißen
 
Hi,

am einfachsten ist es dein Attribut in der Klasse mit
Java:
private double zinssatz = 0.05;
zu initialisieren.

Dazu baust du einen setter der so aussehen könnte
Java:
public void setZinssatz(double neuerZinssatz) {
   if (neuerZinssatz > 1 || neuerZinssatz < 0) {
        // exception werfen oder anders behandeln
   } else {
        this.zinssatz = neuerZinssatz;
   }
}
 
Exception kenn ich noch nicht 🙂 Aber die Setter-Methode. Aber kann ich nicht gleich bei der Initialisierung sagen, dass es nur bestimmte Werte annehmen darf?
 
Nö, das funktioniert nicht, erst bevor du werte in dsa Array speichert musst du überprüfen, obs im Intervall ist.
Wenn du keine Exception kennst, kannst du auch einen boolean- Wert zurückgeben, der dir dann sagt, ob der Wert in das Array eingefügt worden ist oder nicht:

Java:
public boolean setZinssatz(double neuerZinssatz) {
   if (neuerZinssatz > 1 || neuerZinssatz < 0) {
        return false;
       }
    this.zinssatz = neuerZinssatz;
    return true;
   }
 
Zuletzt bearbeitet:
Hallo,

mein Attribut Zinssatz soll nur Werte innerhalb des Intervalls {0,1} annehmen und gleich nach der Initialisierung den Wert 0.05 besitzen.

Java:
private double [] Zinssatz = {0,1};
this.Zinssatz = 0,05;

hätte gedacht, dass es so geht.... tuts aber nicht. Kann mir bitte jemand sagen, wie ich ein Intervall festlege und das Attribut dann nur diese Werte annehmen kann?

Vielen Dank für die Hilfe

Als erstes deklarierst du einen Array von doubles und weisst dem zwei integerwerte zu (übringes Attribute sollten in Java klein geschrieben werden ... also zionssatz
Im ersten Feld steht 0, im zweiten Feld steht 1
Dann versuchst du dem doublearray einen double zuzuweisen.

So sieht Java das was du machst ;-)

Du müsstest den Wert kapseln
(Na ja es gibt sicher geeigneres als "Exception" z.B. Value out of range oder so, aber ich hatte keine Zeit zu suchen)
Java:
	public class Zinssatz {
		private double mZinssatz = 0.0;
		public void setZinssatz(double satz) throws Exception {
			if (satz < 0 || satz > 1)
				throw new Exception();
			mZinssatz = satz;
		}
		public double satz() { return mZinssatz; }
	}

Was du vorhast wird so von Java nicht unterstützt
 

Zurück
Oben