1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Neustart des Programms - Java

Dieses Thema im Forum "PHP & Co." wurde erstellt von VersatileMind, 08.11.06.

  1. VersatileMind

    VersatileMind Uelzener Rambour

    Dabei seit:
    05.11.06
    Beiträge:
    366
    Hallo,

    ich sitze gerade an einem Programm, das ich schreiben muss, und frage mich ,ob es eine Möglichkeit gibt, ein Programm durch einen Befehl von vorn zu beginnen.

    Bei dem Programm handelt es sich um einen einfachen Taschenrechner, der im Grunde nur + - * und / rechnen können muss.

    Wenn ich ein "C" in die Konsole eingabe und mit enter bestätige, sollen die Variablen leer sein, und er soll mich erneut um input bitten - das Programm also wieder von vorn starten.

    Ich habe schon länger gesucht, aber noch nichts passendes gefunden. Vielleicht hat ja einer den passenden Befehl im Kopf.

    Vielen Dank schon einmal ....

    Gruß
     
  2. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Schreib das ganze in einer While-Schleife mit nem Boolean-Wert den du durch eine Eingabe setzen kannst, wie zum Beispiel "EXIT.
    Alternativ kannste auch eine Do - While Schleife benutzen, ist wahrscheinlich sogar die bessere Lösung. also einfach:
    Code:
    do{
        //Rechner-Logik/Funktionen
       }
    while(Ende == False)
    Viel Erfolg

    Der Datschi
     
  3. VersatileMind

    VersatileMind Uelzener Rambour

    Dabei seit:
    05.11.06
    Beiträge:
    366
    Danke erst mal. Mal sehen ob ich das noch hinwursteln kann ... o_O
     
  4. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    wenn nicht, frag :D Ich hätte da noch nen kompletten Postfix-Rechner....
    Musste ich letztes und Vorletztes Sem. Proggen...
    Kannst mir auch mal deinen Code schicken, den du schon hast, dann gucken wir da mal gemeinsam ;)

    Von wo aus musst du das denn machen? Studium, oder Informatik-Unterricht in der Schule???

    Der Datschi
     
  5. VersatileMind

    VersatileMind Uelzener Rambour

    Dabei seit:
    05.11.06
    Beiträge:
    366
    Also hier ist mal der Code ... der Rechner berechnet (im Ersten Durchlauf) alles eigentlich so wie er das machen soll. Wenn ich dann C eingebe, sagt er mir brav, dass alles Variablen zurückgesetzt wurden ... aber anscheinend macht der das nicht richtig. Es ist nämlich so, dass nach dem Eineben von C die Ergebnisse nicht mehr stimmen .... aber hier ist momentan noch einiges ziemlich buggy :) ... ich mach das fürs Studium (1 Semester, seit 3 Wochen) ....

    Hier mal der Code ... vielleicht hast du ja sinnvolle Anmerkungen für mich :p ...

    Danke schon mal.

    Achso ... "Eingabe" ist eine Klasse, die wir bekommen habe, damit die Eingabe wohl leichter zu bewerkstelligen ist ... sie wollen uns am Anfang wohl nicht gleich schocken :)

    Code:
        public static void main(String[] args) {
            
    // ============================================================================
    // DEKLARIERUNG / INITIALISIERUNG
            
            String eingabe1 = Eingabe.readString();
            String eingabe2 = null;
            float operand1 = 0;
            float operand2 = 0;
            String[] array = new String[50];
            int i = 0;
            
    // ============================================================================
    // DER GANZE BERECHNUNGSKRAM --- IN DER IMMER AUSZUFÜHRENDEN WHILE-SCHLEIFE
            
    if (Eingabe.checkFloat(eingabe1)) {
            operand1 = Eingabe.parseFloat(eingabe1);
    
     
            array[i] = Float.toString(operand1);
            
            
            while (true)
                
            {
                String operator = Eingabe.readString();
    
                // LEDIGLICH EIN EINGABEWERT NOTWENDIG
    
                if (operator.equals("x2")) {
                    i++;
                    array[i] = operator; i++;
                    array[i] = " = "; i++;
                    operand1 *= operand1;
                    array[i] = Float.toString(operand1);
                    continue;
                }
                
                else if (operator.equals("#") ) {
                    i++;
                    array[i] = operator; i++;
                    array[i] = " = "; i++;
                    operand1 *= -1;
                    array[i] = Float.toString(operand1);
                    continue;
                }
                
                else if (operator.equals("sin")) {
                    i++;
                    array[i] = operator; i++;
                    array[i] = " = "; i++;
                    operand1 = (float) Math.sin(operand1);
                    array[i] = Float.toString(operand1);
                    continue;
                }
                
                // OPERATIONEN, DIE EINEN ZWEITEN EINGABEWERT VERLANGEN
                // ADDITION
                else if (operator.equals("+")) {
                    i++;
                    array[i] = operator; i++;
                        
                        eingabe2 = Eingabe.readString();
                        if (Eingabe.checkFloat(eingabe2)) {
                            operand2 = Eingabe.parseFloat(eingabe2);
                            array[i] = Float.toString(operand2); i++;
                            operand1 += operand2;
                            array[i] = " = "; i++;
                            array[i] = Float.toString(operand1);
                        continue;
                }    else 
                        System.out.println("Falsche Eingabe -- Programm wird beendet!");
                }
                
                // SUBTRAKTION
                else if (operator.equals("-")) {
                    i++;
                    array[i] = operator; i++;
                        
                        eingabe2 = Eingabe.readString();
                        if (Eingabe.checkFloat(eingabe2)) {
                            operand2 = Eingabe.parseFloat(eingabe2);
                            array[i] = Float.toString(operand2); i++;
                            operand1 -= operand2;
                            array[i] = " = "; i++;
                            array[i] = Float.toString(operand1);
                        continue;
                }    else 
                        System.out.println("Falsche Eingabe -- Programm wird beendet!");
                }
                
                // MULTIPLIKATION
                else if (operator.equals("*")) {
                    i++;
                    array[i] = operator; i++;
                        
                        eingabe2 = Eingabe.readString();
                        if (Eingabe.checkFloat(eingabe2)) {
                            operand2 = Eingabe.parseFloat(eingabe2);
                            array[i] = Float.toString(operand2); i++;
                            operand1 *= operand2;
                            array[i] = " = "; i++;
                            array[i] = Float.toString(operand1);
                        continue;
                }    else 
                        System.out.println("Falsche Eingabe -- Programm wird beendet!");
                }
                
                // DIVISION
                else if (operator.equals("/")) {
                    i++;
                    array[i] = operator; i++;
                        
                        eingabe2 = Eingabe.readString();
                        if (Eingabe.checkFloat(eingabe2)) {
                            operand2 = Eingabe.parseFloat(eingabe2);
                            array[i] = Float.toString(operand2); i++;
                            operand1 /= operand2;
                            array[i] = " = "; i++;
                            array[i] = Float.toString(operand1);
                        continue;
                }    else 
                        System.out.println("Falsche Eingabe -- Programm wird beendet!");
                }            
    
                
                else if (operator.equals("C")) {
                    operand1 = 0;
                    operand2 = 0;
                    System.out.println("Alle Werte gelöscht!");
                    System.out.println("Bitte neuen ersten Wert eingeben [FLOAT]");
                    continue;
                }
                
                // ANWEISUNG ZUR AUSGABE
                
                else if (operator.equals("=")) {
                    System.out.println("Ergebnis: " +operand1);
                    continue;
                }
            }
        }
           
    else {
        System.out.println("Erster Wert muss 'ne Zahl sein!");
         }
            
            
    }        
    }
     
  6. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Boa! :D
    Interessant ^^
    Also: Das Ganze könntest du auch mit Switch/Case Anweisungen realisieren. Würde das ganze einfacher machen. Aber so gehts auch.
    Um das als Schleife laufen zu lassen, würde ich bei der Eingabe von C noch nen Boolean-Wert auf true/false setzen.
    Also:
    Code:
    Boolean laufend = true;
    
    do{
    //deine Logik
    //für 
    else if (operator.equals("X")) //oder einfach ne andere Eingabe zum Beenden
                {
                    laufend = false;
                }
    }
    while(laufend == true); 
    wenn jetzt X eingeben wird, wird laufend = false gesetzt und die Schleife dann sofort beendet. Ganz einfach eigentlich :D

    Was studierst du???

    Der Datschi
     
  7. VersatileMind

    VersatileMind Uelzener Rambour

    Dabei seit:
    05.11.06
    Beiträge:
    366
    Danke für deine Idee :) ... ich bau das gleich heute Abend mal ein ... Aber : das beendet dann meine Schleife zwar aber leert doch keine Variablen .. oder?
    Am besten wäre es - wie gesagt - wenn das Programm nach Eingabe der C-Taste einfach von vorn los geht (ohne das Programm neustarten zu müssen - natürlich :) )

    Ich studiere das Gebiet überhaupt ... Informatik :D
     
  8. Datschi

    Datschi Reinette de Champagne

    Dabei seit:
    08.11.04
    Beiträge:
    417
    Naja, so betrachtet, wäre das ja auch Blödsinn!!! :D
    Weil, wenn du das Programm beendest, dann brauchst du keine leeren Variablen :D
    Und beim Neustart des Programms sind sie ja eh leer, nicht wahr?
    Also eine Abfrage auf C zum Nullen, und eine auf EXIT zum Beenden! Wobei das am schönsten ja eigentlich mit Methoden wäre :D
    Wenigstens wirst du da bei größeren Programmen nicht drum rum kommen.
    Aber das kommt sicherlich alles noch!

    Der Datschi
     

Diese Seite empfehlen