Boolean, Girokonto-Programm

Alsou

Aktives Mitglied
Hallo, könnte mir vlt jemand sagen, wieso ich da rückgabetyp boolean (bei methode auszahlen) brauche... ich checkes leider nicht... Wozu brauche return true...Danke
 
Zuletzt bearbeitet von einem Moderator:

Alsou

Aktives Mitglied
Klasse:Konten
if(perKtoNr==giro.getKontonr()){
giro.auszahlen(betrag);
eingabeOK=true;


Klasse:Girokonto
public boolean auszahlen(int betrag){
saldo-=betrag;
return true;
}
 

r.w.

Bekanntes Mitglied
Hallo, könnte mir vlt jemand sagen, wieso ich da rückgabetyp boolean (bei methode auszahlen) brauche... ich checkes leider nicht... Wozu brauche return true...Danke

Sinnvoll wäre z.B. false zurückzuliefern, wenn mehr ausgezahlt werden soll,
als vorhanden ist. Da aber unabhängig vom Erfolg der Methode immer true
zurückgeliefert wird, hat der return-Wert hier keine Aussagekraft.


VG ROlf
 

Alsou

Aktives Mitglied
Ok, vielen Dank... Diese Methode wird auch nur einmal aufgerufen... verstehe irgendwie nicht, wieso man das überhaupt reingebaut hat... wenn man das gar nicht braucht...^^ man könnte auch stattdessen einfach void nehmen..denke ich..
 
Zuletzt bearbeitet:

thorstenthor

Bekanntes Mitglied
da sich die methode auch wie eine void-methode einsetzen lässt, ist es schon sinnvoll so, auch im hinblick auf erweiterbarkeit.
 
Zuletzt bearbeitet:

r.w.

Bekanntes Mitglied
Ok, vielen Dank... Diese Methode wird auch nur einmal aufgerufen... verstehe irgendwie nicht, wieso man das überhaupt reingebaut hat... wenn man das gar nicht braucht...^^ man könnte auch stattdessen einfach void nehmen..denke ich..

Ich habe nicht geschrieben, dass ein Rückgabewert hier keine Sinn macht,
sondern nur, dass der momentan zurückgegebene noch keine Aussagekraft hat.
Ich halte es schon für sinnvoll zu erfahren, wenn das Konto leer ist. ;-)
 

thorstenthor

Bekanntes Mitglied
Ich halte es schon für sinnvoll zu erfahren, wenn das Konto leer ist. ;-)

was du aber nich durch wiederholtes probieren und jeweils unterschiedlichen beträgen mit dieser methode in erfahrung bringen möchtest:D

bsp.:

Java:
int b = Integer.MAX_VALUE;
while (!g.auszahlen(b))
   b--;
System.out.println(b);
 

r.w.

Bekanntes Mitglied
was du aber nich durch wiederholtes probieren und jeweils unterschiedlichen beträgen mit dieser methode in erfahrung bringen möchtest:D

bsp.:

Java:
int b = Integer.MAX_VALUE;
while (!g.auszahlen(b))
   b--;
System.out.println(b);

Stimmt, dafür würde ich, ähnlich wie bei der Bank meines Vertrauens, einfach die Methode
getKontostand() in Anspruch nehmen, die bis dahin hoffentlich implementiert ist. ;-P
 

Alsou

Aktives Mitglied
Hier kommt ganze Klasse:
Java:
public class Girokonto {
	private int kontonr;
	private int saldo;
	
	public Girokonto(){
		setKontonr(99999);
		setSaldo(0);
	}
	
	public Girokonto(int ktonr, int s){
		setKontonr(ktonr);
		setSaldo(s);
	}
	
	public int getKontonr(){
		return kontonr;
		
	}
	
	
	public boolean setKontonr(int kontonr){
		if(10000<=kontonr & kontonr<=99999){
			this.kontonr=kontonr;
			return true;
		}
		
		else{
			return false;
		}
		
	}
	
	public int getSaldo(){
		return saldo;
	}
	
	public boolean setSaldo(int saldo){
		this.saldo=saldo;
		return true;
	}
	
	public String toString(){
		String erg="Girokonto\n";
		erg+="Kontonummer: " + kontonr + "Saldo : " + saldo;
		
		return erg;
	}
	public boolean auszahlen(int betrag){
		saldo-=betrag;
		return true;
	}
	public void einzahlen(int betrag){
		saldo+=betrag;
	}
	

}

public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		boolean eingabeOK=false;
		int[] vorhandeneKtoNr=new int [2];
		int ktonr=0;
		int s=0;
		System.out.println(" Eingabe eines Girokontos ");
		Girokonto giro= new Girokonto();
		while(!eingabeOK){
			ktonr=IOTools.readInt("Geben Sie die Kontonummer ein (5-stellig): ");
			eingabeOK=giro.setKontonr(ktonr);
		
			
			
		}
		vorhandeneKtoNr[0]=ktonr;
		
		eingabeOK=false;
		
		while(!eingabeOK){
			s=IOTools.readInt(" Geben Sie den Anfangssaldo ein: ");
			eingabeOK=giro.setSaldo(s);
		}
		System.out.println("Eingabe eines Sparkontos ");
		Sparkonto spar=new Sparkonto();
	 eingabeOK=false;
	 while(!eingabeOK){
		 ktonr=IOTools.readInt(" Geben Sie die Kontonummer ein (5-stellig) : ");
		 eingabeOK=spar.setKontonr(ktonr);
		 if(ktonr==vorhandeneKtoNr[0]){
			 System.out.println(" Kontonummer schon vorhanden.");
			 eingabeOK=false;
		 }
	 }
	 
	 vorhandeneKtoNr[1]=ktonr;
	 
	 eingabeOK=false;
	 while(!eingabeOK){
		 s=IOTools.readInt(" Geben Sie den nicht negativen Anfangssaldo ein:");
		 eingabeOK=spar.setSaldo(s);
	 }
	 System.out.println(" Eingabe eines Kreditkartenkontos");
	 Kreditkartenkonto kredit =new Kreditkartenkonto();
	 eingabeOK=false;
	 while(!eingabeOK){
		 ktonr=IOTools.readInt(" Geben Sie die Kontonummer ein (5-stellig) :");
		 eingabeOK=kredit.setKontonr(ktonr);
		 if(ktonr==vorhandeneKtoNr[0]| ktonr==vorhandeneKtoNr[1]){
			 System.out.println(" Kontonummer schon vorhanden.");
			 eingabeOK=false;
		 }
	 }
	 eingabeOK=false;
	 while(!eingabeOK){
		 s=IOTools.readInt(" Geben Sie den Anfangssaldo ein: ");
		 eingabeOK=kredit.setSaldo(s);
	 }
	 
	 eingabeOK=false;
	 while(!eingabeOK){
		 int perKtoNr=IOTools.readInt(" PerKonto-Nummer: ");
		 int anKtoNr=IOTools.readInt(" AnKonto-Nummer: ");
		 int betrag=IOTools.readInt(" Zu überweisender Betrag: ");
		 

		 
		 if(anKtoNr !=giro.getKontonr()& anKtoNr !=spar.getKontonr() & anKtoNr!=kredit.getKontonr() ){
			 System.out.println(" Ankonto -Nummer nicht vorhanden ");
			 continue;
		 }
		 
		 if(perKtoNr==giro.getKontonr()){
			 giro.auszahlen(betrag);
			 eingabeOK=true;
		 }
		 if(perKtoNr==spar.getKontonr()){
			 spar.auszahlen(betrag);
			 if(!eingabeOK){
				 System.out.println("Das Sparkonto gerät ins Minus");
				 continue;
			 }
			 
			 
		 }
		 
		 if(perKtoNr==kredit.getKontonr()){
			 kredit.auszahlen(betrag);
			 eingabeOK=true;
		 }
		 
		 if(anKtoNr==kredit.getKontonr()){
			 kredit.einzahlen(betrag);
			 eingabeOK=true;
		 }
		 if(!eingabeOK){
			 System.out.println(" Ein Konto mit der anKontonummer ist nicht vorhanden ");
			 continue;
		 }
		 
		 
	 }
	 System.out.println(giro);
	 System.out.println(spar);
	 System.out.println(kredit);
	 System.out.println("Programm beendet");

	}

}

Und jetzt ?? Vielen Dank...
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Ok, vielen Dank... Diese Methode wird auch nur einmal aufgerufen... verstehe irgendwie nicht, wieso man das überhaupt reingebaut hat... wenn man das gar nicht braucht...^^ man könnte auch stattdessen einfach void nehmen..denke ich..

Man macht des öfteren Methoden, welche eigentlich nichts ([c]void[/c]) zurückgeben würden, aber man implementiert den Rückgabetypen [c]boolean[/c] und gibt erst Mal immer nur [c]true[/c] zurück. Vielleicht ändert sich die Implementation, der Umfang wird grösser, so dass ein "gelingen" der Methode nicht mehr gegeben ist. Anstatt eine Exception zu werfen, wird dann einfach [c]false[/c] zurückgegeben.
 

thewulf00

Bekanntes Mitglied
Benutze bitte in GROßEM ROTEN TEXT ANGEGEBENEN JAVA-Tags!

Und das hier scheint ein Fehler zu sein:
[c]if(10000<=kontonr & kontonr<=99999){[/c]
 

faetzminator

Gesperrter Benutzer
[c]10000 <= kontonr & kontonr <= 99999[/c] -> [c]10000 >= kontonr && kontonr <= 99999[/c]!?
Lässt niemand mehr seine Programme zum testen laufen :bahnhof: ?
 
G

Gast2

Gast
[c]10000 <= kontonr & kontonr <= 99999[/c] -> [c]10000 >= kontonr && kontonr <= 99999[/c]!?
Lässt niemand mehr seine Programme zum testen laufen :bahnhof: ?

Kommt im endeffekt aufs selbe raus, nur dass bei der ersten Variante beide Fälle geprüft werden, auch wenn die erste Prüfung schon false ergibt, siehe hier:

Java:
    public static void main ( String [] args ) {
    	boolean b1 = 1000 < getKontoNr(1) && getKontoNr(2) < 10000;
    	boolean b2 = 1000 < getKontoNr(3) & getKontoNr(4) < 10000;
    }
    
    private static int getKontoNr(int val) {
    	System.out.println("called " + val);
    	return 5;
    }
called 1
called 3
called 4
 
G

Gast2

Gast
Ok, sry :p

Java:
10000 >= kontonr && kontonr <= 99999
Der Vergleich ergibt true wenn kontonr <= 10000 ist, da war die erste Version schon richtiger ;)

EDIT:
Mit einem klitzekleinen Unterschied... Probier mal kürzere Kontonummern :)
Mir gings da nich um irgendwelche Längen von Kontonummern sondern um den Unterschied von
Code:
&
zu
Code:
&&
 

Alsou

Aktives Mitglied
Ok, das verstehe ich jetzt nicht... Ich meine operanden haben da keine Nebeneffekte... In diesem Fall ist es egal, ob man & oder && benutzt.
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Um zum Thema boolean zurückzukommen: natürlich muss man den Saldo überprüfen. Ebenfalls sollte man keine negativen Nummern zulassen. Ich würde sowas machen:
Java:
private int saldo;

public boolean auszahlen(int betrag) {
    if (betrag < 1) {
        throw new IllegalArgumentException("betrag darf nicht < 1 sein");
    }
    if (saldo < betrag) {
        return false;
    }
    saldo -= betrag;
    return true;
}

public void einzahlen(int betrag) {
    if (betrag < 1) {
        throw new IllegalArgumentException("betrag darf nicht < 1 sein");
    }
    saldo += betrag;
}
Wenn man das Konto noch über einen gewissen Betrag überziehen darf, kann man das natürlich auch ganz einfach einbauen:
Java:
// ...

private int erlaubterUeberzug;

public boolean auszahlen(int betrag) {
    if (betrag < 1) {
        throw new IllegalArgumentException("betrag darf nicht < 1 sein");
    }
    if (saldo + erlaubterUeberzug < betrag) {
        return false;
    }
    saldo -= betrag;
    return true;
}
 
G

Gast2

Gast
Warum sollte das nicht korrekt sein?
Evtl. kann man noch sowas machen wie
Code:
saldo + erlaubterUeberzug <= betrag
damit man auch auf den letzten Cent seines Geldes zugriff hat.
 

thewulf00

Bekanntes Mitglied
Es kann auch sein, dass ich einen Fehler mache.
Code:
saldo + überziehbar < betrag => result
1000  + 200         < 600       false
 
G

Gast2

Gast
Ja, wenn du 1000 aufm Konto hast, zusätzlich noch 200 überziehen darfst, dann sollte die Bank dir doch erlauben 600 abzuheben oder nicht? ;)
Also muss die if abfrage hier doch false liefern.
 

faetzminator

Gesperrter Benutzer
Evtl. kann man noch sowas machen wie
Code:
saldo + erlaubterUeberzug <= betrag
damit man auch auf den letzten Cent seines Geldes zugriff hat.

Nein, eben nicht :) Dann würde es [c]false[/c] zurückgeben, wenn der [c]betrag[/c] genau so gross wie beide Variablen ist. Also hast du dann genau das Gegenteil erreicht :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
J Compiler-Fehler Harshadzahlen mit Boolean Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
A Boolean Java Basics - Anfänger-Themen 5
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
J Boolean[] teilen Java Basics - Anfänger-Themen 13
S public static boolean Java Basics - Anfänger-Themen 4
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
L Überschriebene Boolean Statements Java Basics - Anfänger-Themen 2
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
Kirby.exe ArrayOutOfBoundsException bei boolean Array Java Basics - Anfänger-Themen 19
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
C Java Boolean reagiert nicht Java Basics - Anfänger-Themen 18
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
F Boolean Methode Wert ausgeben. Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
A Boolean in String Java Basics - Anfänger-Themen 2
S Operatoren Boolean Vergleichsoperator Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11
E ISBN Nummer mit boolean Java Basics - Anfänger-Themen 5
W In Methode boolean array zurückgeben Java Basics - Anfänger-Themen 3
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
T Methoden Boolean wird nicht gesetzt Java Basics - Anfänger-Themen 1
H boolean Array Problem Java Basics - Anfänger-Themen 7
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
O boolean Array Frage! Java Basics - Anfänger-Themen 4
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
W Interpreter-Fehler boolean nur eins darf wahr sein Java Basics - Anfänger-Themen 11
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
V Methode erstellen für ein Boolean Array Java Basics - Anfänger-Themen 13
T Boolean by Reference Java Basics - Anfänger-Themen 6
L Wertebereich von boolean Java Basics - Anfänger-Themen 4
D Erklärung static boolean Java Basics - Anfänger-Themen 6
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
J Datentypen Boolean Refferenz Objekt Java Basics - Anfänger-Themen 2
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
A Boolean aus dem ActionlListener Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
M Sind solche boolean Anweisen empfehlenswert? Java Basics - Anfänger-Themen 3
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
J GUI per Boolean steuern Java Basics - Anfänger-Themen 3
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
K Viergewinnt - boolean Problem Java Basics - Anfänger-Themen 2
S Best Practice Boolean mit IF verbinden Java Basics - Anfänger-Themen 7
D Boolean mit String Java Basics - Anfänger-Themen 2
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
E 2 dimensionales Boolean Array Java Basics - Anfänger-Themen 5
B assertArrayEquals nicht für boolean[]? Java Basics - Anfänger-Themen 2
M !boolean das selbe wie boolean == false? Java Basics - Anfänger-Themen 3
L Boolean Methode wirft Fehler aus Java Basics - Anfänger-Themen 12
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
F Datentypen Frage nach Boolean Java Basics - Anfänger-Themen 11
C Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 20
B Boolean abfrage Java Basics - Anfänger-Themen 3
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
L Methoden Boolean-Methode Java Basics - Anfänger-Themen 16
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
M int & boolean Java Basics - Anfänger-Themen 12
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
R boolean, if-else Java Basics - Anfänger-Themen 7
J Variablen Boolean true "übersetzen" in String Java Basics - Anfänger-Themen 10
M Meldung "cannot convert flom boolean to boolean[]" Java Basics - Anfänger-Themen 3
S Name eines boolean ausgeben (nicht den Wert) Java Basics - Anfänger-Themen 43
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
D boolean te wird nicht verwendet Java Basics - Anfänger-Themen 2
M Bedingte Anweisung mit Boolean Java Basics - Anfänger-Themen 2
C cannot convert from int to boolean Java Basics - Anfänger-Themen 3
T Variablen boolean-wert wird nicht gesetzt Java Basics - Anfänger-Themen 6
A In Methode boolean ändern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben