Variablen Weitergehenderr Taschenrechner

RegenSonne

Aktives Mitglied
Hallo, ich habe einen Taschenrechner gemacht... der hat einmal ein double zahl1 und Zahl2.
Jz möchte ich ein = hinzufügen und dann wird das Ergebnis eingegeben. Mein Problem ist z dass wenn der zbsp plus drückt, sich ein neues double erstellt wird und der wieder ein rechenmodul angeben kann. Das halt immer so weiter. sodass man statt 2 zbsp auf 14 zahlen addieren kann.


Java Code:
Java:
package Rechner;
import java.util.Scanner;

public class Fkts {

    static double Zahl1;
    static double Zahl2;
    static String eingabe;

    Scanner input = new Scanner(System.in);
    Scanner input2 = new Scanner(System.in);
    Scanner input3 = new Scanner(System.in);

    public Fkts() {

        System.out.println("Rechner V 0.1");
        System.out.println("Für Hilfe: /help");
        System.out.println("Wenn du loslegen willst gebe zuerst /start ein");
       
        eingabe = input.next();
        if(eingabe.equalsIgnoreCase("/help")) {
            System.out.println("Gebe zuerst 2 Zahlen an und danach ein Rechenmodul (+,-,*,:)");
            System.out.println("Für Fehlercodes gebe /error ein! oder eine 1 um zum Rechnen zu gelangen");
           
        }
        if(eingabe.equalsIgnoreCase("/error")) {
            System.out.println("Error304: Kein vorhandenes Rechenmodul angegeben!");
            System.out.println("Error303: Allgemeiner Fehler!!!");
            System.out.println("Bei jedem Fehler bitte neustarten!");
        }else {
            System.out.println("");
        }
        System.out.println("Gebe deine ERSTE Zahl ein: ");
        Zahl1 = input.nextDouble();
        System.out.println("Gebe bitte eine zweite Zahl ein: ");
        Zahl2 = input.nextDouble();
        System.out.println("Bitte gebe ein Rechenmodul an (+, -, *, :)");
        System.out.println("Wenn du nicht zurechtkommst gebe /help ein!");

        eingabe = input.next();

        if (eingabe.equalsIgnoreCase("+")) {
            RechenModule.plus();
        } else if (eingabe.equalsIgnoreCase("-")) {
            RechenModule.minus();
        } else if (eingabe.equalsIgnoreCase("*")) {
            RechenModule.mal();
        } else if (eingabe.equalsIgnoreCase(":")) {
            RechenModule.geteilt();
        } else if (!eingabe.equalsIgnoreCase("+") || !eingabe.equalsIgnoreCase("-") || !eingabe.equalsIgnoreCase("*")
                || !eingabe.equalsIgnoreCase(":")) {
           
            System.out.println("Error304");
        } else {
            System.out.println("Error303");
        }

    }
}

lg und danke für eure Antworten ^^
 
Zuletzt bearbeitet:
Moin,
Jz möchte ich ein = hinzufügen und dann wird das Ergebnis eingegeben. Mein Problem ist z dass wenn der zbsp plus drückt, sich ein neues double erstellt wird und der wieder ein rechenmodul angeben kann. Das halt immer so weiter. sodass man statt 2 zbsp auf 14 zahlen addieren kann.
Gibt es davon auch eine deutsche Fassung ??? 😕
Es versteht doch keiner, was Du möchtest !! 🙄

VG Klaus
 
Hallo RegenSonne, du könntest in die geschweiften Klammern hinter dem Plus schreiben:
Java:
 if(eingabe.equalsIgnoreCase("+")
 { 
int lösung = Zahl1 + Zahl2;
System.out.println(lösung);
}
...und entsprechend bei allen anderen Grundrechenarten.
Allerdings ist der Aufbau des Programms an sich schon recht merkwürdig - du hast alles in den Konstruktor gepackt. Die ersten drei println's würde ich dort auch lassen, aber den Rest in eine eigene Methode auslagern. Du könntest einen Aufruf dieser Methode im Konstruktor platzieren. Beim Ablauf würde sich nichts ändern, aber der Code wäre übersichtlicher und du könntest irgendwann die Funktion hinzufügen dass der Spieler mehrere Rechnungen hintereinander machen kann ohne das Programm neu zu starten...
Bleib dran🙂
 
@Salmo Salar ja das war eigentlich meine Frage.. hab Grad gemerkt dass ich das falsch beschrieben habe xd. Die fkt habe ich alle mit zahl1+.....

Mein Problem ist nur dass der unendlich viele zahlen eingeben können soll. Lg
 
Hallo RegenSonne, versuch dir mal vorzustellen wie ein einfacher Taschenrechner es machen würde. Normalerweise werden ja nicht 14 Variablen gemacht und nacheinander befüllt und addiert, sondern der Taschenrechner rechnet die ersten beiden Zahlen trotzdem zusammen und zeigt das Ergebnis an. Wenn du noch eine Zahl dazuaddieren möchtest drückst du plus und gibst noch eine Zahl ein. Diese Zahl wird aber zur Summe der beiden vorherigen Zahlen addiert. Also musst du das Ergebnis in Zahl1 umfüllen. Danach machst du eine Schleife, die Zahl2 einliest, das Zeichen einliest und die Rechnung ausführt, die gewünscht ist. So würde ich das spontan machen, vielleicht gibt es einen besseren Weg.
Dann siehst du auch, warum ich dir rate, den Code in Methoden zu zerteilen: In der Schleife wird ja wieder auf die Grundrechenzeichen geprüft und erneut die Rechnungen überprüft. Du könntest alles zweimal schreiben, aber das ist programmiertechnisch ungünstig - macht den Code unnötig lang und das Risiko, einen Fehler an einer Stelle zu beheben und an der anderen zu übersehen ist hoch. Vielleicht machst du doch eine Methode, der du den eingelesenen String übergibst, die den gesamten großen if-else-Block enthält und die Lösung in Zahl1 schreibst. Da du die beiden Variablen als Instanzvariablen oben in der Klasse geschrieben hast, kann jede Methode sie verwenden.
 

Zurück
Oben