Newbee vermasselt Prüfung, nun Fehlersuche step-by-step

Nope, du kannst den ersten Aufruf von einKonto.abheben( ... ) einfach weglassen. Der Aufruf in der if-Anweisung reicht völlig.

TOM
 
Code:
// Vom Konto abheben
einKonto.abheben(150.00);
if (einKonto.abheben()){
System.out.println("Kontostand nach abheben von 150.00: "
	 + einKonto.getKontostand());}
else{
System.out.println("Guthaben nicht ausreichend"´);
}
also passt das dann so?
 
Falsche Version:
Code:
// behebe 150 geldeinheiten ...
einKonto.abheben(150);

// behebe 150 geldeinheiten ...
if (einKonto.abheben(150)) {
 ....
}

Also gesamt: 300 Geldeinheiten, du willst aber nur 150 beheben.

Das hier ist dir richtige Version:
Code:
// behebe 150 geldeinheiten ...
if (einKonto.abheben(150)) {
 ....
}

TOM
 
Code:
public class KontoTester {
	public static void main(String[] args) {
 Konto einKonto;
 
 // Konto anlegen
 einKonto = new Konto(500.00, "12345678");
 System.out.println("Die Kontonummer lautet: "+ einKonto.getKontonummer());
		System.out.println("Erster Kontostand: " + einKonto.getKontostand());
 
 // Vom Konto abheben
 einKonto.abheben();
 if (einKonto.abheben(150.00)){
 System.out.println("Kontostand nach abheben von 150.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
 // Auf Konto einzahlen
 einKonto.einzahlen(11.23);
 System.out.println("Kontostand nach einzahlen von 11.23: "
	  + einKonto.getKontostand());
 
 // Vom Konto abheben
 einKonto.abheben();
 if (einKonto.abheben(400.00)){
 System.out.println("Kontostand nach abheben von 400.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
 
 // Auf Konto einzahlen
 einKonto.einzahlen(222.50);
 System.out.println("Kontostand nach einzahlen von 222.50: "
	  + einKonto.getKontostand());
 
 // Vom Konto abheben
 einKonto.abheben();
 if (einKonto.abheben(47.62)){
 System.out.println("Kontostand nach abheben von 47.62: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
	}
}
 
Oki doki, ich hab mich vielleicht nicht genau ausgedrückt. Was ich meinte war, lass das erste einKonto.abheben(...) weg. Bei dir siehts so aus:

Code:
 // Vom Konto abheben
 einKonto.abheben();
 if (einKonto.abheben(400.00)){
 System.out.println("Kontostand nach abheben von 400.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }

einKonto.abheben(), abgesehen davon, dass es nicht funktionieren würde, da ein float Parameter erwartet werden würde ..., ist nicht notwendig. Lass es einfach weg. Wenn du es nämlich dabehälst, wird die Methode zweimal ausgeführt, also einmal vor, genau an der Stelle die wir gerade diskutieren, als auch IN der if-Anweisung. Die richtige Lösung muss also lauten:

Code:
 // Vom Konto abheben
 if (einKonto.abheben(400.00)){
 System.out.println("Kontostand nach abheben von 400.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }

Das reicht vollkommen für das Behenben von 400 Geldeinheiten.

Diese ganzen Abfragen könntest du dir aber ersparen, und es zentral in der Methode ausgeben. Dazu aber mehr, wenn du das Beispiel hier richtig auf die Reihe bekommen hast :)
 
also dann so;)


Code:
 public class KontoTester {
	public static void main(String[] args) {
 Konto einKonto;
 
 // Konto anlegen
 einKonto = new Konto(500.00, "12345678");
 System.out.println("Die Kontonummer lautet: "+ einKonto.getKontonummer());
		System.out.println("Erster Kontostand: " + einKonto.getKontostand());
 
 // Vom Konto abheben
 if (einKonto.abheben(150.00)){
 System.out.println("Kontostand nach abheben von 150.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
 // Auf Konto einzahlen
 einKonto.einzahlen(11.23);
 System.out.println("Kontostand nach einzahlen von 11.23: "
	  + einKonto.getKontostand());
 
 // Vom Konto abheben
 if (einKonto.abheben(400.00)){
 System.out.println("Kontostand nach abheben von 400.00: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
 
 // Auf Konto einzahlen
 einKonto.einzahlen(222.50);
 System.out.println("Kontostand nach einzahlen von 222.50: "
	  + einKonto.getKontostand());
 
 // Vom Konto abheben
 if (einKonto.abheben(47.62)){
 System.out.println("Kontostand nach abheben von 47.62: "
	  + einKonto.getKontostand());}
 else{
 System.out.println("Guthaben nicht ausreichend"´);
 }
	}
}
 
Eine Verfeinerung wäre dann noch, damit du dir die ständige Abfragerei ersparst, dass du die if-Abfrage in die Methoden reinnimmst. Was mein ich damit schon wieder? :) Ganz einfach, so wies jetzt gemacht wird, mußt du nach jeden Methodenaufruf

Code:
if (einKonto.abheben(..)) {
 System.out.println ....
}
else {
 System.out.println ...
}

abfragen. Das kannst du aber eigentlich schon in deiner Methode machen ... . Also, wenn behoben werden darf, gleich einen Output auf die Console rausschreiben ... . Das Gleiche beim Einzahlen ;)
 
TommyMo hat gesagt.:
Eine Verfeinerung wäre dann noch, damit du dir die ständige Abfragerei ersparst, dass du die if-Abfrage in die Methoden reinnimmst. Was mein ich damit schon wieder? :) Ganz einfach, so wies jetzt gemacht wird, mußt du nach jeden Methodenaufruf

Code:
if (einKonto.abheben(..)) {
System.out.println ....
}
else {
System.out.println ...
}

abfragen. Das kannst du aber eigentlich schon in deiner Methode machen ... . Also, wenn behoben werden darf, gleich einen Output auf die Console rausschreiben ... . Das Gleiche beim Einzahlen ;)

ok, das werde ich mir heute abend reinziehen, das andere ist mir jetzt klar soweit
 
ich will aber noch eine kleine sache angehen, welche so aussieht:

Code:
public class TestExceptions {
static String arr[] = {"Alpha", "Beta", "Gamma", "Zeta"};
public static void zeigeEintrag(int index) {
System.out.println("Eintrag " + index + " lautet: " +
arr[index]);
}
public static void main(String args[]) {
int index = Integer.parseInt(args[0]);
zeigeEintrag(index);
}
}

Wenn ich alles bis jetzt richtig gemacht habe, dann wandelt die Methode main() das erste Kommandozeilenargument in einen Wert vom Typ int um und ruft mit diesem Argument die Methode zeigeEintrag() auf. Diese Methode gibt den entsprechenden Eintrag des Arrays arr aus. Das wäre schon mal ein Teil der Aufgabe.

Jetzt soll die Klasse so umgeschrieben werden, dass die Methode zeigeEintrag() keine Exception
wirft, wenn der übergebene Index außerhalb der Array-Grenzen liegt, sondern
soll in einem solchen Fall die Meldung ausgegeben werden, dass es keinen Eintrag
mit diesem Index gibt.
Als Hinweis ist noch gegeben: Verwenden Sie dazu Anweisungen zur Ausnahmebehandlung, nicht die Eigenschaft length des Arrays.
Ausnahmen, die durch ein fehlendes oder nicht numerisches Kommandozeilenargument auftreten, müssen nicht behandelt werden.
 

Neue Beiträge

Zurück