Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
30.01.12, 14:44
|
#1
|
Eichhörnchenjäger
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
|
Java - Wert aus case 2 in case 1 übernehmen (switch-case Struktur)
Hallo,
ich versuche mich gerade an einer Übungsklausur für Programmentwicklung 1 und soll hier in Java ein Programm für ein Konto schreiben, welches die Funktionen: (1) Kontostand anzeigen, (2) Einzahlen, (3) Abheben besitzt.
Ich habe die einzelnen Funktionen als cases in eine switch-case Struktur gesetzt. Mein Problem ist nun, dass ich nicht weiß wie ich Werte aus einem case in einen anderen übergeben kann.
Genauer: Wenn ich etwas einzahle und dann wieder in case 1 meinen Kontostand aufrufe bekomme ich den default Wert 0€ angezeigt. Wie kann ich den Wert für "Kontostand" aus case 2 für andere cases übernehmen?
Mein Code sieht so aus:
Code:
public static void main (String[] args)
{
int Funktion = 1;
// Instanzvariable Kontostand
double Kontostand = (0.0);
// (Zugriffs-) Methoden
switch (Funktion){
// (1) Kontostand abfragen
// Aktueller Kontostand wird ausgegeben
case 1:
{
System.out.println ("Dein Guthaben beträgt: "+Kontostand+"€");
break;
}
// (2) Einzahlen auf das Konto
// Kontostand wird um Einzahlung erhöht
case 2:
{
double einzahlen = (50.0);
Kontostand += einzahlen;
System.out.println ("Du hast: "+einzahlen+"€ eingezahlt.");
break;
}
// (3) Abheben vom Konto
// Konto darf nicht ins Negative gehen: in diesem Fall
// soll kein Abheben erfolgen und statt dessen ein
// entsprechender Hinweis ausgegeben werden
case 3:
{
double abheben = (20.0);
if (Kontostand < abheben)
System.out.println ("Du kannst nicht mehr Geld abheben als du besitzt!");
else
Kontostand -= abheben;
System.out.println ("Du hast: "+abheben+"€ angehoben");
break;
}
//Blablub
default:
{
System.out.println ("Falsche Eingabe!");
}
}
}
PS: Ich habe auch mal gegooglet und habe gelesen, dass man den Wert mit "return Kontostand" anstatt "breake" zurückgeben kann, aber einfach ersetzten funktioniert nicht und ich weiß nicht wie ich sonst damit umgehen muss.
Bitte um Hilfe.
__________________
Gruß Tr3nDy
|
|
|
30.01.12, 15:39
|
#2
|
Anfänger
Registriert seit: Oct 2009
Beiträge: 10
Bedankt: 3
|
wo ist die switch-case struktur?
ansonsten wirst du vermutlich einfach immer das programm neu starten, was nicht funktionieren wird. die letzte änderung (einzahlen) wird nur im speicher vorgenommen. sobald du dein programm neustartest, wird der kontostand wieder mit 0 initialisiert.
du willst vermutlich etwas in diese richtung machen:
main() {
doSomething(2); // einzahlen
doSomething(1); // kontostand anzeigen
//...
}
doSomething(int aktion) {
//switch (aktion)
//...
}
|
|
|
30.01.12, 15:55
|
#3
|
Eichhörnchenjäger
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
|
Sorry, da habe ich wohl einen Fehler gemacht und eine ältere Version meines Versuches gepostet. Habe jetzt den aktuellen Stand oben eingefügt mit den switch cases  .
__________________
Gruß Tr3nDy
|
|
|
30.01.12, 16:03
|
#4
|
Anfänger
Registriert seit: Oct 2009
Beiträge: 10
Bedankt: 3
|
wie bereits gesagt:
oder du fragst in einer schleife die tastatur eingaben ab...
|
|
|
03.02.12, 17:33
|
#5
|
Anfänger
Registriert seit: Oct 2010
Beiträge: 39
Bedankt: 33
|
Wenn du Werte aus Case 2 behalten wirst, dann musst du meines Wissens, den break weglassen, sonst verlässt er jedes mal die Schleife, nach dem er in Case 2 gesprungen ist
Lässt du wie gesagt das break weg, so "fällt" er aus Case 2 in Case 1 durch, ein sogenannter "Fall through"
Edith sagt: Ich sehe gerade, dass dein Case 1 ganz oben steht, müsstest Case 2 voranstellen
|
|
|
03.02.12, 18:29
|
#6
|
Anfänger
Registriert seit: Aug 2011
Beiträge: 2
Bedankt: 0
|
Also jetzt passt mal auf ihr Deppen, das geht so ja:
Code:
package konto;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Konto
{
private double kontostand, einzahlung, abhebung = 0.;
private int funktion = -1;
//TODO: exception handling, verify inputs
public void doKonto() throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true)
{
System.out.print("Funktion waehlen: ");
funktion = Integer.valueOf(br.readLine());
switch (funktion)
{
case 1:
{
System.out.println("Kontostand = "+kontostand);
break;
}
case 2:
{
System.out.print("Betrag einzahlen: ");
einzahlung = Double.valueOf(br.readLine());
kontostand += einzahlung;
einzahlung = 0;
break;
}
case 3:
{
System.out.print("Abhebung in Hoehe von: ");
abhebung = Double.valueOf(br.readLine());
if (abhebung > kontostand)
{
System.out.println("Konto nicht gedeckt.");
}
else
{
kontostand -= abhebung;
}
abhebung = 0;
break;
}
case 0:
{
System.exit(0);
}
}
}
}
public static void main(String[] args) throws IOException
{
Konto konto = new Konto();
konto.doKonto();
}
}
Viel Glück dann am Montag du Pfosten.
|
|
|
13.02.12, 21:06
|
#7
|
Anfänger
Registriert seit: Jun 2010
Beiträge: 5
Bedankt: 0
|
Mach doch für jede aufgabe eine Methode, du hast doch mit JAva eine Objekt orientierte Sprache, alles was du im Betrieb behalten must schreib dir in variablen
switch nimmste nur zum aufrufen deiner Methoden
|
|
|
13.02.12, 21:07
|
#8
|
Anfänger
Registriert seit: Jun 2010
Beiträge: 5
Bedankt: 0
|
Mach doch für jede aufgabe eine Methode, du hast doch mit JAva eine Objekt orientierte Sprache, alles was du im Betrieb behalten must schreib dir in variablen
switch nimmste nur zum aufrufen deiner Methoden
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.
().
|