myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Java - Wert aus case 2 in case 1 übernehmen (switch-case Struktur)

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 30.01.12, 14:44   #1
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard 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
Tr3nDy ist offline   Mit Zitat antworten
Ungelesen 30.01.12, 15:39   #2
gk22
Anfänger
 
Registriert seit: Oct 2009
Beiträge: 10
Bedankt: 3
gk22 ist noch neu hier! | 0 Respekt Punkte
Standard

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)
//...
}
gk22 ist offline   Mit Zitat antworten
Ungelesen 30.01.12, 15:55   #3
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard

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
Tr3nDy ist offline   Mit Zitat antworten
Ungelesen 30.01.12, 16:03   #4
gk22
Anfänger
 
Registriert seit: Oct 2009
Beiträge: 10
Bedankt: 3
gk22 ist noch neu hier! | 0 Respekt Punkte
Standard

wie bereits gesagt:


oder du fragst in einer schleife die tastatur eingaben ab...
gk22 ist offline   Mit Zitat antworten
Ungelesen 03.02.12, 17:33   #5
jon.west
Anfänger
 
Registriert seit: Oct 2010
Beiträge: 39
Bedankt: 33
jon.west ist noch neu hier! | 0 Respekt Punkte
Standard

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
jon.west ist offline   Mit Zitat antworten
Ungelesen 03.02.12, 18:29   #6
wasili_dsw
Anfänger
 
Registriert seit: Aug 2011
Beiträge: 2
Bedankt: 0
wasili_dsw ist noch neu hier! | 0 Respekt Punkte
Standard

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.
wasili_dsw ist offline   Mit Zitat antworten
Ungelesen 13.02.12, 21:06   #7
WilliWeasel
Anfänger
 
Registriert seit: Jun 2010
Beiträge: 5
Bedankt: 0
WilliWeasel ist noch neu hier! | 0 Respekt Punkte
Standard

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
WilliWeasel ist offline   Mit Zitat antworten
Ungelesen 13.02.12, 21:07   #8
WilliWeasel
Anfänger
 
Registriert seit: Jun 2010
Beiträge: 5
Bedankt: 0
WilliWeasel ist noch neu hier! | 0 Respekt Punkte
Standard

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
WilliWeasel ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.


Sitemap

().