Taschenrechner

thor_norsk

Bekanntes Mitglied
Guten Tag,
Aufgabe: Programmieren Sie einen einfachen Taschenrechner. Es soll zwei werte von der Tastatur einlesen und das Ergebnis einer Rechenoperation auf dem Bildschirm ausgeben. Als Rechenoperationen sollen Addition, Subtraktion, Division und Multiplikation möglich sein. Fragen Sie die gewünschte Rechenoperation ebenfalls über eine Tastatureingabe und führen Sie die Berechnungen in eigenen Methoden durch.

Ich habe meinen Code getestet und führt Alle Rechenarten durch. Es wäre sehr nett, wenn ich von euch einen Feedback bekäme, ob ich richtig programmiert habe.
Bitte denkt daran , ich habe bis jetzt nur Schleifen, Verzweigungen, switch-case,usw kennengelernt. Also bitte keine komplizierte Vorschläge :)

package taschenrechner;

import javax.swing.*;

public class Taschenrechner {

// Methode zur Berechnung der Addition.
static double addition (double zahl1, double zahl2) {
return (zahl1 + zahl2);
}

// Methode zur Berechnung der Subtraktion
static double subtraktion (double zahl1, double zahl2) {
return (zahl1 - zahl2);
}

// Methode zur Berechnung der Multiplikation
static double multiplikation (double zahl1, double zahl2) {
return (zahl1 * zahl2);
}

// Methode zur Berechnung der Division
static double division (double zahl1, double zahl2) {
return (zahl1 / zahl2);
}


public static void main(String[] args) {

double eingabeZahl1, eingabeZahl2;
int zahlwahl;

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");

zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-4"));
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

switch(zahlwahl) {
case 1:
System.out.println("Sie haben als Rechenart die Addition gewählt!");
System.out.println("Die Addition Ihre Eingabe lautet:"+addition(eingabeZahl1,eingabeZahl2));
break;

case 2:
System.out.println("Sie haben als Rechenart die Subtraktion gewählt!");
System.out.println("Die Subtraktion der Zahlen: Zahl1 - Zahl2 ="+subtraktion(eingabeZahl1, eingabeZahl2));
break;

case 3:
System.out.println("Sie haben als Rechenart die Multiplikation gewählt!");
System.out.println("Die Multiplikation der Zahlen: Zahl1 * Zahl2 ="+multiplikation(eingabeZahl1, eingabeZahl2));
break;

case 4:
System.out.println("Sie haben als Rechenart die Division gewählt!");
System.out.println("Die Division der Zahlen: Zahl1 / Zahl2 ="+division(eingabeZahl1, eingabeZahl2));
break;


default:
System.out.println("Sie haben keine gültige Auswahl getroffen!");
}
System.exit(0);
}
}

Im Anschluss sollen wir die Aufgabe mit Potenzrechnung erweitern. Allerdings muss ich zugeben, dass die Methode zur Potenzrechnung aus dem Internet übernommen habe.

Erweiterung: Erweitern Sie den Taschenrechner aus der vorherigen Aufgabe so, dass der Potenzen berechnen kann. Der erste eingelesene Wert soll dabei die Basis bilden und der zweite eingelesene Wert den Exponenten. wenn Sie die Zahlen 2 und 3 eingelesen haben, soll der Taschenrechner also 2³ rechnen,
Erstellen Sie für das Berechnen der Potenz eigene Methode. Die Potenz soll durch eine Schleife errechnet werden.

( Es wäre sehr nett, wenn jemand mir erklären könnte, was die Methode

package Taschenrechner;

import javax.swing.*;

public class Taschenrechner {

// Methode zur Berechnung der Addition.
static double addition (double zahl1, double zahl2) {
return (zahl1 + zahl2);
}

// Methode zur Berechnung der Subtraktion
static double subtraktion (double zahl1, double zahl2) {
return (zahl1 - zahl2);
}

// Methode zur Berechnung der Multiplikation
static double multiplikation (double zahl1, double zahl2) {
return (zahl1 * zahl2);
}

// Methode zur Berechnung der Division
static double division (double zahl1, double zahl2) {
return (zahl1 / zahl2);
}

// Methode zur Berechnung der Potenzrechnung

static double potenz (double basis, double exponent) {
double zahl = 1;
if(basis == 0){ // verstehe den Sinn nicht!
zahl = 0;
} else {
zahl = 1;
}

for(int i = 1; i <= exponent; i++){
zahl *= basis;
}
return zahl;
}

public static void main(String[] args) {

double eingabeZahl1, eingabeZahl2;
int zahlwahl;

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");
System.out.println("5 Potenzrechnung");

zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-5"));
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

switch(zahlwahl) {
case 1:
System.out.println("Sie haben als Rechenart die Addition gewählt!");
System.out.println("Die Addition Ihre Eingabe lautet:"+addition(eingabeZahl1,eingabeZahl2));
break;

case 2:
System.out.println("Sie haben als Rechenart die Subtraktion gewählt!");
System.out.println("Die Subtraktion der Zahlen: Zahl1 - Zahl2 ="+subtraktion(eingabeZahl1, eingabeZahl2));
break;

case 3:
System.out.println("Sie haben als Rechenart die Multiplikation gewählt!");
System.out.println("Die Multiplikation der Zahlen: Zahl1 * Zahl2 ="+multiplikation(eingabeZahl1, eingabeZahl2));
break;

case 4:
System.out.println("Sie haben als Rechenart die Division gewählt!");
System.out.println("Die Division der Zahlen: Zahl1 / Zahl2 ="+division(eingabeZahl1, eingabeZahl2));
break;

case 5:
System.out.println("Sie haben als Rechenart die Potenzrechnung gewählt!");
System.out.println("Potenz der Zahlen: Basis ^ Exponent ="+potenz(eingabeZahl1, eingabeZahl2));
break;

default:
System.out.println("Sie haben keine gültige Auswahl getroffen!");
}
System.exit(0);
}
}
 

temi

Top Contributor
Würdest du den Code bitte in Code-Tags einfügen (das Symbol </> im Editor)? Dann kann man das besser lesen.

Ein paar Anmerkungen dazu:

Der Klassenname ist normalerweise ein Substantiv und für Methodennamen (die tun was) nimmt man Verben:
Java:
static double addition (double zahl1, double zahl2) {
    return (zahl1 + zahl2);
}

// besser

static double addiere (double zahl1, double zahl2) {
    return (zahl1 + zahl2);
}

Variablen sollten so spät wie möglich deklariert werden, also erst, wenn man sie braucht:
Java:
double eingabeZahl1, eingabeZahl2;
int zahlwahl;

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");

zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-4"));
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

// besser

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");

int zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-4"));
double eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
double eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

Der Name der Variablen könnte etwas besser gewählt werden, anstatt von "zahlwahl" trifft z. B. "operation" oder "rechenoperation" die Bedeutung viel deutlicher. Die gute Wahl von Bezeichnern (Klasse, Methoden, Variablen) ist nicht so trivial, wie man meinen möchte.
 
Zuletzt bearbeitet:

thor_norsk

Bekanntes Mitglied
Java:
package taschenrechner;

import javax.swing.*;

public class Taschenrechner {

// Methode zur Berechnung der Addition.
static double addition (double zahl1, double zahl2) {
return (zahl1 + zahl2);
}

// Methode zur Berechnung der Subtraktion
static double subtraktion (double zahl1, double zahl2) {
return (zahl1 - zahl2);
}

// Methode zur Berechnung der Multiplikation
static double multiplikation (double zahl1, double zahl2) {
return (zahl1 * zahl2);
}

// Methode zur Berechnung der Division
static double division (double zahl1, double zahl2) {
return (zahl1 / zahl2);
}


public static void main(String[] args) {

double eingabeZahl1, eingabeZahl2;
int zahlwahl;

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");

zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-4"));
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

switch(zahlwahl) {
case 1:
System.out.println("Sie haben als Rechenart die Addition gewählt!");
System.out.println("Die Addition Ihre Eingabe lautet:"+addition(eingabeZahl1,eingabeZahl2));
break;

case 2:
System.out.println("Sie haben als Rechenart die Subtraktion gewählt!");
System.out.println("Die Subtraktion der Zahlen: Zahl1 - Zahl2 ="+subtraktion(eingabeZahl1, eingabeZahl2));
break;

case 3:
System.out.println("Sie haben als Rechenart die Multiplikation gewählt!");
System.out.println("Die Multiplikation der Zahlen: Zahl1 * Zahl2 ="+multiplikation(eingabeZahl1, eingabeZahl2));
break;

case 4:
System.out.println("Sie haben als Rechenart die Division gewählt!");
System.out.println("Die Division der Zahlen: Zahl1 / Zahl2 ="+division(eingabeZahl1, eingabeZahl2));
break;


default:
System.out.println("Sie haben keine gültige Auswahl getroffen!");
}
System.exit(0);
}
}
 

thor_norsk

Bekanntes Mitglied
Java:
package Taschenrechner;

import javax.swing.*;

public class Taschenrechner {

// Methode zur Berechnung der Addition.
static double addition (double zahl1, double zahl2) {
return (zahl1 + zahl2);
}

// Methode zur Berechnung der Subtraktion
static double subtraktion (double zahl1, double zahl2) {
return (zahl1 - zahl2);
}

// Methode zur Berechnung der Multiplikation
static double multiplikation (double zahl1, double zahl2) {
return (zahl1 * zahl2);
}

// Methode zur Berechnung der Division
static double division (double zahl1, double zahl2) {
return (zahl1 / zahl2);
}

// Methode zur Berechnung der Potenzrechnung

static double potenz (double basis, double exponent) {
double zahl = 1;
if(basis == 0){ // verstehe den Sinn nicht!
zahl = 0;
} else {
zahl = 1;
}

for(int i = 1; i <= exponent; i++){
zahl *= basis;
}
return zahl;
}

public static void main(String[] args) {

double eingabeZahl1, eingabeZahl2;
int zahlwahl;

System.out.println("Bitte wählen Sie eine Rechenart aus:");
System.out.println("1 Addition");
System.out.println("2 Subtraktion");
System.out.println("3 Multiplikation");
System.out.println("4 Division");
System.out.println("5 Potenzrechnung");

zahlwahl = Integer.parseInt(JOptionPane.showInputDialog("Bitte treffen Sie eine Auswahl zwischen 1-5"));
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

switch(zahlwahl) {
case 1:
System.out.println("Sie haben als Rechenart die Addition gewählt!");
System.out.println("Die Addition Ihre Eingabe lautet:"+addition(eingabeZahl1,eingabeZahl2));
break;

case 2:
System.out.println("Sie haben als Rechenart die Subtraktion gewählt!");
System.out.println("Die Subtraktion der Zahlen: Zahl1 - Zahl2 ="+subtraktion(eingabeZahl1, eingabeZahl2));
break;

case 3:
System.out.println("Sie haben als Rechenart die Multiplikation gewählt!");
System.out.println("Die Multiplikation der Zahlen: Zahl1 * Zahl2 ="+multiplikation(eingabeZahl1, eingabeZahl2));
break;

case 4:
System.out.println("Sie haben als Rechenart die Division gewählt!");
System.out.println("Die Division der Zahlen: Zahl1 / Zahl2 ="+division(eingabeZahl1, eingabeZahl2));
break;

case 5:
System.out.println("Sie haben als Rechenart die Potenzrechnung gewählt!");
System.out.println("Potenz der Zahlen: Basis ^ Exponent ="+potenz(eingabeZahl1, eingabeZahl2));
break;

default:
System.out.println("Sie haben keine gültige Auswahl getroffen!");
}
System.exit(0);
}
}
 

temi

Top Contributor
Falls es sich nicht um Copy & Paste Fehler handelt, dann rücke deinen Code ordentlich ein. Das macht das (Programmierer-) Leben deutlich leichter.
 

thor_norsk

Bekanntes Mitglied
Danke für deinen Tipps! Klassenname ist groß geschrieben, also Substantiv, Verben, auch Prädikat genannt ist klein geschrieben.
Einrückungen habe ich auch unter Eclipse.
Allerdings wäre super, wenn du mir Potenzmethode erklären könntest.

[CODE lang="java" title="potenz"]// Methode zur Berechnung der Potenzrechnung

static double potenz (double basis, double exponent) {
double zahl = 1;
if(basis == 0){
zahl = 0;
} else {
zahl = 1;
}

for(int i = 1; i <= exponent; i++){
zahl *= basis;
}
return zahl;
}[/CODE]
 

mihe7

Top Contributor
Die Methode ist unsinnig.
1. Für den Fall, dass Basis und Exponent 0 sind, gibt es keine allgemeinverbindliche Definition der Potenz. Gebräuchlich ist ggf. noch, dass 0^0 = 1 ist.
2. Für den Fall, dass die Basis 0, der Exponent aber größer 0 ist, ist es schwachsinnig, die Zahl mehrfach mit 1 zu multiplizieren. Dann einfach gleich 0 zurückgeben.
3. Mit einem rationalen Exponenten wirst Du auf diese Weise nicht die Potenz berechnen.
 

temi

Top Contributor
Allerdings wäre super, wenn du mir Potenzmethode erklären könntest.
Ich würde dir vorschlagen, die Methode wegzuschmeißen und selbst darüber nachzudenken, wie die Methode implementiert werden könnte. Dann überlege dir ein paar Testfälle und probiere die Methode aus.
Java:
public class Main {

    public static int potenziere(int basis, int exponent) {

    }

    public static void main(String[] args) {
        System.out.println(potenziere(1, 0));
        System.out.println(potenziere(1, 1));
        System.out.println(potenziere(2, 1));
        System.out.println(potenziere(2, 2));
    }
}

Sollst du wirklich mit double-Werten rechnen? Wie würde die Schleife aussehen, bei einem Exponenten von z. B. 2,3342?
 

thor_norsk

Bekanntes Mitglied
Laut Aufgabestellung sollte mit einer Schleife die Potenzrechnung programmiert werden, deshalb habe ich die for - Schleife gewählt.
 

temi

Top Contributor
Mathematisch betrachtet, sollte mein Programm aus meiner Sicht auch mit gebrochenen Zahlen rechnen können oder ?
Keine Ahnung, du hast doch die Aufgabe bekommen.
Laut Aufgabestellung sollte mit einer Schleife die Potenzrechnung programmiert werden, deshalb habe ich die for - Schleife gewählt.
Dann beschränke dich auf ganzzahlige Exponenten. Alles andere geht nicht mit einer Schleife.

Überleg erst mal auf einem Stück Papier, wie das geht, wenn du z. B. 2 hoch 3 rechnen möchtest.
 

thor_norsk

Bekanntes Mitglied
Super! Klappt nicht :). Das Ergebnis ist 4! Ich denke wenn ich später viel mehr über Java gelernt habe dann gibt es bestimmt eigene Java-Methoden die man laden kann. Aber jetzt muss ich die Aufgabe mit Schleifen bzw. einer Schleife lösen.
Also : Basis als Double und Exponent als Integer funktioniert, habe ich gerade getestet.
 
M

Mart

Gast
Super! Klappt nicht :). Das Ergebnis ist 4! Ich denke wenn ich später viel mehr über Java gelernt habe dann gibt es bestimmt eigene Java-Methoden die man laden kann. Aber jetzt muss ich die Aufgabe mit Schleifen bzw. einer Schleife lösen.
Also : Basis als Double und Exponent als Integer funktioniert, habe ich gerade getestet.
2.5 als exponent ist das ergebnis aus hoch zahl + wurzel nehmen ...

zb.: 2 hoch 3 wurzel 2 = 2 hoch 1.5
deswegen brauchst du als exponent auch keine kommazahlen
 

thor_norsk

Bekanntes Mitglied
Hallo bin wieder da :)
[CODE lang="java" title="Potenzrechnung"]// Methode zur Berechnung der Potenz
static double potenz (double basis, double exponent) {

double potenz = 1;
for (double i=1; i<=exponent; ++i) {
potenz = potenz * basis;
}
return potenz;
}[/CODE]
 

thor_norsk

Bekanntes Mitglied
Ich habe Alles bei Double gelassen, sonst meckert die eingabezahl!
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

Ich denke später werden wir noch math.pow() kennen lernen und weitere Methoden die ich aktuell nicht kenne.
 

Jw456

Top Contributor
Ich habe Alles bei Double gelassen, sonst meckert die eingabezahl!
eingabeZahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
eingabeZahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

Ich denke später werden wir noch math.pow() kennen lernen und weitere Methoden die ich aktuell nicht kenne.
dann gib halt in der Methode bei einer gebrochenen Zahl einen Fehler aus .
 

thor_norsk

Bekanntes Mitglied
Ich habe versucht auf int um zu programmieren, der Compiler meckert die ganze Zeit. Ist natürlich auch berechtigt vom Compiler zu meckern.
 

Jw456

Top Contributor
Ich habe versucht auf int um zu programmieren, der Compiler meckert die ganze Zeit. Ist natürlich auch berechtigt vom Compiler zu meckern.
Klar das der Compiler meckert.

Ich habe ja nur gesagt das du dem User mitteilen solltest das wenn er beim Exponenten eine KommaZahl eingibt das Ergebnis nicht stimmen wird. Das könntest du in der potenz Methode ausgeben.
 

Jw456

Top Contributor
Java:
static double potenz (double basis, double exponent) {

        int ex = (int) exponent;
        if( exponent-ex == 0 ){
            double potenz = 1;
            for (double i=1; i<=exponent; ++i) {
                potenz = potenz * basis;
            }
            return potenz;
        }
        
    //  hier fehler ausgeben nur ganze zahlen beim exponent erlaubt     
    return 0;
 
 }
 

Neue Themen


Oben