Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog

cocosch

Mitglied
Hallo,
ich komme mit dieser Aufgabe nicht weiter. Ich soll einen Taschenrechner Programmieren mit einer zusätzlichen Potenzberechnung. Der Taschenrechner den ich Programmiert habe, kann bis jetzt Addieren, Subtrahieren, Multiplizieren und Dividieren. Jetzt soll zusätzlich noch eine Potenzberechnung dazu.

Aufgabe:
Der erste eingelesene Wert soll dabei die Basis bilden und der zweite eingelesene Wert den Exponenten. Wenn die Zahlen 2 und 3 eingelesen werden, soll der Taschenrechner also 2³ rechnen. Die Potenz soll durch eine Schleife errechnet werden.

Das habe ich bis jetzt programmiert: Wie kann ich zusätzlich die Potenzfunktion hinzufügen???

Java:
//für das Einlesen
import javax.swing.*;

public class EinsendeAufgabe_03_05 {
 
 
        public static void main(String[] args) {
      
           // Variablen festlegen                 
            double zahl1, zahl2;
            double ergebnis;     
            String operator;
                                                                                                                                                     
            
            // Zahl1 Eingabe über den grafischen Dialog
            zahl1 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie Sie die erste Zahl ein: " ));
            // Operator Eingabe über den grafischen Dialog
            operator = JOptionPane.showInputDialog(" Geben Sie einen Operator ein ( + ) \t ( - ) \t ( * ) \t ( / ) ");
            // Zahl2 Eingabe über den grafischen Dialog
            zahl2 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie die zweite Zahl ein: "));
                      
            //Operator Auswahl über switch-case
            switch (operator) {
            case "+":
                ergebnis = zahl1 + zahl2;
                //Ausgabe der Rechnung
                System.out.println("Das Ergebnis Ihrer Rechnung ist: "  + ergebnis);
                break;
            case "-":      
                ergebnis = zahl1 - zahl2;
                System.out.println("Das Ergbnis Ihrer Rechnung ist: " + ergebnis);
                break;
            case"*":
                ergebnis = zahl1 * zahl2;
                System.out.println("Das Ergebnis Ihrer Rechnung ist: " + ergebnis);
                break;
            case"/":
                ergebnis = zahl1 / zahl2;
                System.out.println("Das Ergebnis Ihrer Rechnung ist: "  + ergebnis);
                break;
                                                                                       
                default:
                System.out.println("Sie haben keinen gültigen Rechenoperator eingegeben");
                                  
      System.exit(0);          
      
    }
          
        }
        }
 
Zuletzt bearbeitet von einem Moderator:
Wie berechnet du denn die Potenz mit einer Schleife? Und was für Bedingungen müssen ggf. gelten?

Evtl. überlegst du Dir das am Beispiel von 2 hoch 3 - was müsste eine Schleife da machen?
 
Wie berechnet du denn die Potenz mit einer Schleife? Und was für Bedingungen müssen ggf. gelten?

Evtl. überlegst du Dir das am Beispiel von 2 hoch 3 - was müsste eine Schleife da machen?

Die Potenz soll über eine Methode berechnet werden und über eine Schleife. Ich weiß das man das mit einer for-Schleife machen kann, aber ich habe Probleme diese in meinem Programm einzufügen. Das Programm war eine Aufgabe, jetzt soll ich zusätzlich noch eine Potenzberechnung hinzufügen
 
Keiner tipp für deine for schleife. Der zweiten Wert (3) minus 1 ist die Anzahl der Durchläufe der Schleife.

Und welchen Wert musst du multiplizieren um 2 hoch 3 zu bekommen?

 
Kannst du denn die Potenz ausdrücken als eine Wiederholung? Für was steht denn 2 hoch 3? Kannst du das erst einmal beschreiben?

Ich weiss, aber wenn ich das in meinem Code einfüge, läuft nichts mehr. Ich habe schon viel ausprobiert.
Was hast du denn eingefügt? Und was für ein Problem hattest du dann? (Mal davon abgesehen, dass du da dann keine Schleife mehr hast.)
 
Java:
import javax.swing.*;

public class EinsendeAufgabe_03_05 {
       
    //Methode zum berechnen einer Potenz
    public static int potenz (int basis, int exponent) {
       
        int potenz = 1 ;      
       
        for (int i =1 ; i<=exponent ; ++i)
           
        {
            potenz = potenz * basis ;          
           
    }
        return potenz;
               
    }  
         
        public static void main(String[] args) {
           
            double zahl1, zahl2;
            double ergebnis;          
            String operator;
                                                                                                                                                         
                 
            // Zahl1 Eingabe über den grafischen Dialog
            zahl1 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie Sie die erste Zahl ein: " ));
            // Operator Eingabe über den grafischen Dialog
            operator = JOptionPane.showInputDialog(" Geben Sie einen Operator ein:( + ) \t ( - ) \t ( * ) \t ( / ) \t ( n ) ");
            // Zahl2 Eingabe über den grafischen Dialog
            zahl2 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie die zweite Zahl ein: "));
                           
            //Operator Auswahl über switch-case
       
            switch (operator) {
            case "+":
                ergebnis = zahl1 + zahl2;
                //Ausgabe der Rechnung
                System.out.println("Das Ergebnis Ihrer Rechnung ist: "  + ergebnis);
                break;
            case "-":          
                ergebnis = zahl1 - zahl2;
                System.out.println("Das Ergbnis Ihrer Rechnung ist: " + ergebnis);
                break;
            case"*":
                ergebnis = zahl1 * zahl2;
                System.out.println("Das Ergebnis Ihrer Rechnung ist: " + ergebnis);
                break;
            case"/":
                ergebnis = zahl1 / zahl2;
                System.out.println("Das Ergebnis Ihrer Rechnung ist: "  + ergebnis);
                break;
            case"n":                              
                int potenz(int basis, int exponent);  [B] //Hier wird mir ein Syntax Fehelr angezeigt und somit läuft das Programm nicht.[/B]
                System.out.println("Das Ergebnis Ihrer Rechnung ist: " + potenz(basis, exponent));
                break;
                                                                                           
                default:
                System.out.println("Sie haben keinen gültigen Rechenoperator eingegeben");
                                       
      System.exit(0);              
           
    }
               
        }
        }
 
Zuletzt bearbeitet von einem Moderator:
Du hast die Methode ja weiter oben geschrieben. Im switch willst du die Methode doch nun aufrufen. Wie ruft man eine Methode auf?
 
Du hast die Methode ja weiter oben geschrieben. Im switch willst du die Methode doch nun aufrufen. Wie ruft man eine Methode auf?

Der Aufruf der Methode (ohne Klassen Name) sollte passen (ist ja static in der gleichen Klasse) nur die Übergabe Werte und der Rückgabewert nicht.




eines noch deine Zahlen 1 und 2 , Ergebnis sind "double" deine Methode arbeitet mit "int"
auch die Rückgabe ist nur int. solltest du zu double ändern dann wird es auch gehn.
 
Zuletzt bearbeitet:
Eines hätte ich noch dein Code kann keine Exponenten als Kommazahl (3,546) verarbeiten.

Abstürzten wird der Code nicht.

Da das bestimmt nicht gefordert ist würde ich die Eingabe auf eine Ganze Zahl prüfen und vielleicht einen Fehler ausgeben, wenn es eine gebrochene Zahl ist.
 
Hallo ich hoffe du hast nun herausgefunden wie der Aufruf aussehen sollt.
Aber die Datentypen der Methode "potenz" musst du doch zu double ändern oder beim Aufruf Casten.
Der Return DatenTyp sollte auch wieder ein double sein und kein int.


Java:
case"n":       
                ergebnis = potentz(zahl1 , zahl2);
                System.out.println("Das Ergebnis Ihrer Rechnung ist: " + ergebnis);
                break;
 
Hallo,
danke für eure Hilfe. Ich hab den Code umgeändert und es hat geklappt, könnte man wahrscheinlich einfacher schreiben, aber ich bin froh das es so erst mal funktioniert. Ich versuche jetzt noch die Null bei der Nachkommastelle weg zu bekommen, wenn es sich um eine ganze Zahl handelt 😀 Aber erst mal vielen Danke 🙂


public class EinsendeAufgabe_03_05 {

//Methode zum berechnen einer Potenz
static double potenz ( double basis, double exponent) {

double potenz = 1 ;

for (double n =1 ; n<=exponent ; ++n)

{

potenz = potenz * basis ;

}
return potenz;

}

public static void main(String[] args) {

double zahl1, zahl2;
double ergebnis;
String operator;


// Zahl1 Eingabe über den grafischen Dialog
zahl1 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie Sie die erste Zahl ein: " ));
// Operator Eingabe über den grafischen Dialog
operator = JOptionPane.showInputDialog(" Geben Sie einen Operator ein🙁 + ) \t ( - ) \t ( * ) \t ( / ) \t ( n ) ");
// Zahl2 Eingabe über den grafischen Dialog
zahl2 = Double.parseDouble(JOptionPane.showInputDialog("Geben Sie die zweite Zahl ein: "));


//Operator Auswahl über switch-case
switch (operator) {
case "+":
ergebnis = zahl1 + zahl2;
//Ausgabe der Rechnung
System.out.println("Das Ergebnis Ihrer Rechnung ist: " + ergebnis);
break;
case "-":
ergebnis = zahl1 - zahl2;
System.out.println("Das Ergbnis Ihrer Rechnung ist: " + ergebnis);
break;
case"*":
ergebnis = zahl1 * zahl2;
System.out.println("Das Ergebnis Ihrer Rechnung ist: " + ergebnis);
break;
case"/":
ergebnis = zahl1 / zahl2;
System.out.println("Das Ergebnis Ihrer Rechnung ist: " + (double)zahl1/zahl2);
break;
case"n":
potenz(zahl1, zahl2);
System.out.println("Das Ergebnis Ihrer Rechnung ist: " + potenz(zahl1, zahl2));
break;

default:
System.out.println("Sie haben keinen gültigen Rechenoperator eingegeben");

System.exit(0);

}

}
}
 
potenz(zahl1, zahl2);
System.out.println("Das Ergebnis Ihrer Rechnung ist: " + potenz(zahl1, zahl2));

wenn du es bei der Ausgabe berechnest kannst die erste Zeile weg lassen.
 
public class EinsendeAufgabe_03_05 {

//Methode zum berechnen einer Potenz
static double potenz ( double basis, double exponent) {

double potenz = 1 ;

for (double n =1 ; n<=exponent ; ++n)

{

potenz = potenz * basis ;

}
return potenz;

Hallo, kann mir mal einer den Zusammenhang mit dem for double "n" nennen? ich meine, double basis & double exponent erklärt sich ja durch das Auslesen im main unterhalb, aber ich erkenne irgendwie keinen Anhaltspunkt was das "n" darstellen soll. Bin nämlich gerade an der gleichen Aufgabe & schon sehr lange am arbeiten. Saludos
 
Hallo, kann mir mal einer den Zusammenhang mit dem for double "n" nennen? ich meine, double basis & double exponent erklärt sich ja durch das Auslesen im main unterhalb, aber ich erkenne irgendwie keinen Anhaltspunkt was das "n" darstellen soll. Bin nämlich gerade an der gleichen Aufgabe & schon sehr lange am arbeiten. Saludos
n ist ein Zähler und dient als Abbruchbedingung für die Schleife. Sobald es den Wert "exponent" überschreitet, wird die Schleife nicht mehr ausgeführt.
 

Zurück
Oben