Erste Schritte Taschenrechner

eisk4lt

Mitglied
Hallo Leute,

ich starte mal einen zweiten Versuch :)

und zwar möchte ich einen taschenrechner programmieren, der erst eine zahl erfragt, dann einen operaten (+,- usw) und dann die zweite zahl.
dann soll er je nach operant das ergebnis ausgeben...
habe jetzt schon ein bisschen von dem geschafft was er machen soll aber irgendwie hab ich noch fragen..

hier erstmal der Code

Java:
import java.util.Scanner;

public class Taschenrechner {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        
          public static long fakultaet (int n) { 
              if (n== 0 || n==1)
        
                  System.out.println("1");
              
              else
                  
                  System.out.println(n*fakultaet(n-1));
              
         

        
            Scanner ichbineinscanner = new Scanner(System.in);

            double zahl1;
            int operant;
            double zahl2;

            System.out.println("Herzlich Willkommen im Taschenrechner");
            System.out.println("Bitte geben Sie eine Zahl ein: ");

            zahl1 = ichbineinscanner.nextDouble();

            System.out.print("Bitte geben Sie jetzt die gewünschte"
                + " Rechenoperation an => <1> = +  <2> = -  <3> = Fakultät  ");
            System.out.print("<4> = Runden  <0> = Ende);");

            operant = ichbineinscanner.nextInt();

            switch (operant) {
            case 0:

                System.out.println("E N D E");
                System.exit(0);
            }

            System.out.println("Bitte geben Sie nun die zweite Zahl ein: ");

            zahl2 = ichbineinscanner.nextDouble();

            switch (operant) {
            case 1:
                System.out.println(zahl1 + zahl2);
                break;
            case 2:
                System.out.println(zahl1 - zahl2);
                break;

            case 3:

                System.out.println("hier soll die Fakultät ausgegeben werden");
                break;

            case 4:

                System.out.println(Math.round(zahl1));
                break;

            }

        }
    }
}

Ich weiss, die Klammerung is ne Katastrophe, muss mir die Konventionen dafür nochmal zu gemüte führen...

Was ich nicht checke ist :


1.) oben bei der Methode fakultaet sagt er irgendwas von illegal modifier, hab schon mit klammerung usw rumgespielt aber irgendwie wirds nicht ( auch static weglassen bringt nichts).


2.) wenn ich im switch case block das break reinmache, hört er nach dem angegebenen schritt auf (was ja soweit klar ist), allerdings wäre es schön, wenn er danach wieder zum anfang sprint. also dachte ich, ich probiere es mit nem return, allerdings macht er dann das gleiche.
wenn ich es weglasse, gibt er das ergebnis richtig aus, aber dann halt auch von allen anderen switch anweisungen...

3.) kann ich eigentlich auch ne for schleife in einem switch case block machen oder ist das unüblich oder nachteilhaft?

4.)hatte erst zahl 1 und zahl2 als integer, soll aber ein double sein. gibt es eine möglichkeit dass ich z.b. 12 und 2,5 addieren kann ohne dass ein input mismatch kommt? bei 12,0 und 2,5 klappt alles prima....


vielen dank schonmal für eure hilfe!

lG
eisk4lt
 

Helgon

Bekanntes Mitglied
Sag mal, ist das extra das du ne Methode in der main Methode schreibst? :D

Java:
import java.util.Scanner;
 
public class Taschenrechner {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        
          public static long fakultaet (int n) { 
              if (n== 0 || n==1)

Java:
import java.util.Scanner;
 
public class Taschenrechner {
 
    public static void main(String[] args) {}
   
    public int fakultaet(int n) {}

}

1. Siehe hier drüber
2. Dir fehlen ja anscheinend die Basics (und das Verständnis des Prinzips von OOP)
Das int steht übrigens nicht umsonst da :) sondern für den Typ des Rückgabewerts und du gibts nichtmal etwas zurück. (siehe Frage 2. Returning a Value from a Method (The Java™ Tutorials > Learning the Java Language > Classes and Objects))
3. Macht man meines Wissens nicht :D
4. Wenn du verschiedene Typen hast musst du 'type casten', sprich in den richtigen Datentyp umwandeln. In diesem Fall in Double.

Java:
double ergebnis = 12.5 + (double) 2;
 
Zuletzt bearbeitet:

eisk4lt

Mitglied
super danke für die antwort helgon!

ja hast recht mir fehlen noch viele basics, hab erst vor 4 wochen angefangen...
auf die idee mit typcast war ich auch schon gekommen, war aber offenbar syntaktisch falsch was ich da versucht habe...


// EDIT : hab gerade gesehen, ich hatte oben bei der deklaration zahl1 und zahl2 schon als double festgelegt, aber wenn man nur 12 (also eig int) eingibt ohne ,0 gehts net..


punkt 1 werde ich mal dementsprechend ändern und 2 schaue ich nochma nach..


vielen dank erstma!

lG
 
Zuletzt bearbeitet:

eisk4lt

Mitglied
soo habe den code nochmal ein bisschen erweiterung und kommentiert, die grundfunktionialität passt weitestgehend:

Java:
//Import des Scanners
import java.util.Scanner;

public class Taschenrechner {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        //Initialisierung des Scanners / Namensgabe
        Scanner ichbineinscanner = new Scanner(System.in);

        // Festlegen von Variablen
        double zahl1;
        int operant;
        double zahl2;

        // Anweisungen für den Benutzer 
        System.out.println("Herzlich Willkommen im Taschenrechner!");
        System.out.println("Bitte geben Sie die erste Zahl ein: ");

        // Scanner liest erste Zahl ein
        zahl1 = ichbineinscanner.nextDouble();

        // Anweisungen für den Benutzer
        System.out.print("Bitte geben Sie jetzt die gewünschte"
            + " Rechenoperation an => <1> = +  <2> = -  <3> = Fakultät  ");
        System.out.print("<4> = Runden  <0> = Ende);");

        // Scanner liest die gewünschte Rechenoperation ein
        operant = ichbineinscanner.nextInt();

        // Abgleich, ob die "richtige" Zahl eingegeben wurde
        if (operant != 1 || operant != 2 || operant != 3 || operant != 4
            || operant != 0) {
            System.out.println("Bitte geben Sie nur 1,2,3,4 oder 0 ein!");
            // else
        }

        // Switch Case Block. Hier werden je nach eingegebenen Operanten die
        // Ergebnisse berechnet
        switch (operant) {
        case 0:

            System.out.println("E N D E");
            System.exit(0);
        }

        System.out.println("Bitte geben Sie nun die zweite Zahl ein: ");

        zahl2 = ichbineinscanner.nextDouble();

        switch (operant) {
        case 1:
            System.out.println(zahl1 + zahl2);
            break;
        case 2:
            System.out.println(zahl1 - zahl2);
            break;

        case 3:

            System.out.println(fakultaet(zahl1));
            break;

        case 4:

            System.out.println(Math.round(zahl1));
            System.out.println(Math.round(zahl2));
            break;

        default:

            break;
        }
    }

    
    // Methode für die Fakultätsberechnung
    public static double fakultaet(double n) {

        if (n == 0 || n == 1) {

            System.out.println(1);
        }

        else {

            return n * fakultaet(n - 1);
        }
    }
}


Allerdings habe ich noch das problem, dass er z.b. "Bitte geben Sie nur 1,2,3,4 oder 0 ein!" jedes mal ausgibt, egal was passoert...

kann man das so wie ich das mit dem logischen oder gemacht habe nicht lösen?


bzw. wie kann ich es hinbekommen, dass er nur sag ich mal die erste eingegebene zahl rundet und nicht immer auf zahl2 noch weiter wartet..?!


danke für die antworten schonma im voraus!

lG
 
S

SlaterB

Gast
> if (operant != 1 || operant != 2 ||
ist in der Tat falsch, jede Zahl der Welt ist entweder != 1 oder != 2, du willst vielleicht ein UND statt ODER?
übrigens wäre das nun wirklich eine geeignete Stelle für ein switch, statt alle Zahlen mühsam einzeln zu vergleichen,
außerdem erfolgt keine Wiederholung der Eingabe oder so, was soll die Ausgabe dort?

für Zeile 42 mit nur einer Zahl könntest du dagegen vom switch auf das einfachere if wechseln
 

eisk4lt

Mitglied
danke für deine antwort!

habe das mit den operanten jetzt anders gelöst, funktioniert auch =)
habe auch schon mit einem fall through kämpfen müssen aber ist jetzt auch weg.

leider heult unser checkstyle, welches den code wegen des stils überprüft noch wegen 2 returnanweisungen in einer methode rum (ganz unten) und ich weiss nicht wie ich das anders schreieben kann...

wo muss ich denn eine schleife positionieren, damit ich am ende jeder berechnung wieder "zum anfang" gelangen kann??
danke schonmal und lG


Java:
//Import des Scanners
import java.util.Scanner;

public class Taschenrechner {

    public static void main(String[] args) {

        // Initialisierung des Scanners / Namensgabe
        Scanner ichbineinscanner = new Scanner(System.in);

        // Festlegen von Variablen
        double zahl1;
        int operant;
        double zahl2;

        // Anweisungen für den Benutzer
        System.out.println("Herzlich Willkommen im Taschenrechner!");
        System.out.println("Bitte geben Sie die erste Zahl ein: ");

        // Scanner liest erste Zahl ein
        zahl1 = ichbineinscanner.nextDouble();

        // Anweisungen für den Benutzer
        System.out.print("Bitte geben Sie jetzt die gewünschte"
            + " Rechenoperation an => <1> = +  <2> = -  <3> = Fakultät  ");
        System.out.print("<4> = Runden  <0> = Ende);");

        // Scanner liest die gewünschte Rechenoperation ein
        operant = ichbineinscanner.nextInt();

        // Hier werden je nach eingegebenen Operanten die Ergebnisse berechnet

        switch (operant) {
        case 0:
            System.out.println("E N D E");
            break;

        case 3:

            System.out.println(fakultaet((int) zahl1));
            break;

        case 4:

            System.out.println(Math.round(zahl1));
            break;
            
        default:

            System.out.println("Bitte geben Sie als Operanten"
                + " nur 1, 2, 3, 4 oder 0 ein!");
            break;

        }

        System.out.println("Bitte geben Sie nun die zweite Zahl ein: ");
        zahl2 = ichbineinscanner.nextDouble();

        switch (operant) {
        case 1:
            System.out.println(zahl1 + zahl2);
            break;
        case 2:
            System.out.println(zahl1 - zahl2);
            break;

        default:

            System.out.println("Bitte geben Sie als Operanten"
                + " nur 1, 2, 3, 4 oder 0 ein!");
            break;
        }

    }

    // Methode für die Fakultätsberechnung
    public static int fakultaet(int n) {

        if (n == 0 || n == 1) {

            return 1;
        }

        else {

            return n * fakultaet(n - 1);
        }
    }
}
 
S

SlaterB

Gast
eine Schleife kommt ganz einfach um Code herum, fertig, mehr ist zunächst nicht zu sagen,
probiere aus, schaue dir Beispiele an

Zahlen kann man in Variablen speichern und am Ende nur ein return des Wertes
 

Podux

Mitglied
Wollte nochmal kurz was zu den Basics sagen ;)

Man sollte Variablen, wenn man sie initialisiert in Java immer auch einen Wert zuweisen.
int operand = 0; z.B.

Wenn du schreibst int operand; dann reserviert er für die Variable operand einen Bereich im Speicher und übernimmt den Wert der drin steht. Nennen wir ihn diesen Bereich einfach mal $a1.

Speicher:
$a1
{
534.3453453454
}

Dann hast du in operand schon mal den wert 534.3453453454. Das Programm wirft dann z.B. sofort nachdem start eine Fehlermeldung aus, weil er versucht eine Komma Zahl in eine int variable zu schreiben.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
W Taschenrechner Java Basics - Anfänger-Themen 11
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
S Taschenrechner Java Basics - Anfänger-Themen 13
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
S Compiler-Fehler Basic- Taschenrechner/ Fehler Java Basics - Anfänger-Themen 8
S Basic- Taschenrechner? Java Basics - Anfänger-Themen 7
P Hilfe bei Java Taschenrechner Java Basics - Anfänger-Themen 25
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
S Taschenrechner hilfe! Java Basics - Anfänger-Themen 17
H Java Taschenrechner Java Basics - Anfänger-Themen 4
R Variablen Taschenrechner mit Komfortfunktionen Java Basics - Anfänger-Themen 2
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
Q simpler Taschenrechner Java Basics - Anfänger-Themen 34
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
R Variablen Weitergehenderr Taschenrechner Java Basics - Anfänger-Themen 4
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
M Java Taschenrechner Programmieren Java Basics - Anfänger-Themen 12
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
A Taschenrechner programmieren Java Basics - Anfänger-Themen 21
Z Java Taschenrechner Java Basics - Anfänger-Themen 6
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taschenrechner in Java Java Basics - Anfänger-Themen 6
J Erste Schritte Java CMD Taschenrechner mit Parametern! Java Basics - Anfänger-Themen 16
J Taschenrechner: Probleme Java Basics - Anfänger-Themen 5
E Taschenrechner problem! Ich komme nicht voran Java Basics - Anfänger-Themen 18
R Erste Schritte Taschenrechner mit Schleife Java Basics - Anfänger-Themen 24
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
Z Taschenrechner - Additions/Substraktions/Multiplikations/Divionsketten! Java Basics - Anfänger-Themen 4
D Taschenrechner Frage Java Basics - Anfänger-Themen 12
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
Z Taschenrechner - Wie addiere,multipliziere und subtrahiere ich? Java Basics - Anfänger-Themen 6
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
K Taschenrechner im GUI Java Basics - Anfänger-Themen 2
P Taschenrechner, operatoren Java Basics - Anfänger-Themen 4
D Simpler Taschenrechner Java Basics - Anfänger-Themen 6
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Operatoren Taschenrechner Ergebnis ausgeben Java Basics - Anfänger-Themen 7
A Taschenrechner zeigt Error Java Basics - Anfänger-Themen 7
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
M Taschenrechner fertigstellung Java Basics - Anfänger-Themen 1
N Methoden Taschenrechner Java Basics - Anfänger-Themen 2
F z = input.nextChar(); PROBLEM Taschenrechner Java Basics - Anfänger-Themen 7
J Scanner Taschenrechner? Java Basics - Anfänger-Themen 7
J Variablen Rechenzeichen und Zahlen verknüpfen für einen Taschenrechner Java Basics - Anfänger-Themen 17
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
R Methoden Taschenrechner Java Basics - Anfänger-Themen 4
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
I Java Starthilfe (Taschenrechner) Java Basics - Anfänger-Themen 7
J Taschenrechner Problemchen Java Basics - Anfänger-Themen 3
D Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 11
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
J Taschenrechner Punkt vor Strich Java Basics - Anfänger-Themen 9
A Taschenrechner programmieren Java Basics - Anfänger-Themen 5
M Ausklappbares Fenster bei grafischem Taschenrechner Java Basics - Anfänger-Themen 2
M Dividieren bei Grafischem Taschenrechner klappt nicht Java Basics - Anfänger-Themen 2
N Taschenrechner mit Unterprogra Java Basics - Anfänger-Themen 6
C Taschenrechner Java Basics - Anfänger-Themen 12
Z Taschenrechner programmieren Java Basics - Anfänger-Themen 5
K Taschenrechner Java Basics - Anfänger-Themen 25
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
D Taschenrechner Java Basics - Anfänger-Themen 28
A Taschenrechner-GUI mit BorderLayout? Java Basics - Anfänger-Themen 6
W [PROJEKT] Simpler grafischer Taschenrechner Java Basics - Anfänger-Themen 8
M Taschenrechner mit JApplet Java Basics - Anfänger-Themen 26
J Grafischen Taschenrechner programmieren - Frage dazu Java Basics - Anfänger-Themen 12
W Taschenrechner Java Basics - Anfänger-Themen 2
T Tasten vom Taschenrechner? Java Basics - Anfänger-Themen 3
S Datentypen Taschenrechner Java Basics - Anfänger-Themen 13
J Taschenrechner Java Basics - Anfänger-Themen 5
J Taschenrechner Java Basics - Anfänger-Themen 9
M While bei einem Taschenrechner Java Basics - Anfänger-Themen 5
F Datentypen Ganz simpler Taschenrechner mit switch Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben