Potenz mit Schleife berechnen

Lestas89

Bekanntes Mitglied
Guten Tag!

Ich habe folgende Aufgabe zu lösen (Siehe Bild).

Die Potenzierung mit der Schleife habe ich bereits programmiert:

Java:
import javax.swing.JOptionPane;
class Potenz{
    public static void main(String []args){
       
        int zahl = 1;
       
        String ersteEingabe = JOptionPane.showInputDialog("Geben Sie die Basis der Potenz ein:");
        int basis = Integer.parseInt(ersteEingabe);
       
        String zweiteEingabe = JOptionPane.showInputDialog("Geben Sie den Exponenten der Potenz ein:");
        int exponent = Integer.parseInt(zweiteEingabe);
   
        if(basis == 0){
        zahl = 0;
        } else {
        zahl = 1;
        }
       
        for(int i = 1; i <= exponent; i++){
        zahl *= basis;
       
        }
        JOptionPane.showMessageDialog(null,"Die Potenz hat den Wert " + zahl);
    }
}

Allerdings verstehe ich in der Aufgabenstellung folgende Passage nicht:
" Führen Sie dieses Einlesen und Rechnen wiederholt solange aus, bis beide
Eingaben gleichzeitig gleich 0 sind. "

Was ist damit gemeint? Ich kann doch nur eine Basis und einen Exponenten eingeben.

Vielen Dank im Voraus!
 

Anhänge

  • Potenz.jpg
    Potenz.jpg
    99,6 KB · Aufrufe: 98

Dompteur

Top Contributor
Damit ist gemeint, dass du das Programm beenden sollst, sobald der User sowohl für die Basis als auch für den Exponenten 0 eingegeben hat.
 

Lestas89

Bekanntes Mitglied
Hallo Dompteur,

danke für deine Antwort!
Hab ich das so richtig programmiert?

Java:
import javax.swing.JOptionPane;
class Potenz{
    public static void main(String []args){
       
        int zahl = 1;
       
        String ersteEingabe = JOptionPane.showInputDialog("Geben Sie die Basis der Potenz ein:");
        int basis = Integer.parseInt(ersteEingabe);
       
        String zweiteEingabe = JOptionPane.showInputDialog("Geben Sie den Exponenten der Potenz ein:");
        int exponent = Integer.parseInt(zweiteEingabe);
   
        if(basis == 0 && exponent == 0)
        System.exit(0);
       
   
        if(basis == 0){
        zahl = 0;
        } else {
        zahl = 1;
        }
       
        for(int i = 1; i <= exponent; i++){
        zahl *= basis;
       
        }
        JOptionPane.showMessageDialog(null,"Die Potenz hat den Wert " + zahl);
    }
}
 

Dompteur

Top Contributor
Nicht ganz. Du sollst ja die Berechnung öfters als ein Mal machen. Also brauchst du eine Schleife.
Die Schleife bricht ab, wenn basis und exponent 0 sind.

Außerdem solltest du kein exit aufrufen, sondern die main Methode einfach zu Ende gehen lassen.
 

Lestas89

Bekanntes Mitglied
Aber ich versteh dann das Ergebnis nicht. Ich kann doch nur eine Basis und einen Exponenten für das Endergebnis einlesen. Was soll mir das Programm denn dann am Ende ausgeben? Mehrere Basen und Exponenten? Da liegt mein Verständnisproblem.
 

Dompteur

Top Contributor
Du sollst in einer Schleife folgendes machen:
* Einlesen von Basis und Exponent
* Berechnen
* Ausgabe des Ergebnisses

Das ganze wiederholst du solange bis die Eingabe von Basis und Exponent 0 ist.

Also: Jeder Schleifendurchlauf liest neue Werte ein (-> Benutzereingabe), rechnet und gibt das Ergebnis aus.
 

Lestas89

Bekanntes Mitglied
Und wenn Basis und Exponent 0 sind soll das Programm beendet werden?
Edit: Ich habs verstanden. Ich mache mich nun dran und poste gleich mein Ergebniss.
 
Zuletzt bearbeitet:

Lestas89

Bekanntes Mitglied
So meintest du es, oder?

Java:
import javax.swing.JOptionPane;
class Potenz{
    public static void main(String []args){
       
        int zahl = 1;
        boolean b = false;
        int basis = 1;
        int exponent = 1;
       
        while(!b){
       
       
        String ersteEingabe = JOptionPane.showInputDialog("Geben Sie die Basis der Potenz ein:");
        basis = Integer.parseInt(ersteEingabe);
       
        String zweiteEingabe = JOptionPane.showInputDialog("Geben Sie den Exponenten der Potenz ein:");
        exponent = Integer.parseInt(zweiteEingabe);
       
        if(basis == 0 && exponent == 0){
        b = true;
        System.exit(0);
        }
   
        if(basis == 0){
            zahl = 0;
        } else {
            zahl = 1;
        }
       
        for(int i = 1; i <= exponent; i++){
        zahl *= basis;
       
        }
        JOptionPane.showMessageDialog(null,"Die Potenz hat den Wert " + zahl);
   
   
   
        }
   
       
    }
}
 

Dompteur

Top Contributor
Das "exit" gefällt mir immer noch nicht ;-)

Vorschlag:
Java:
         b = basis == 0 && exponent == 0;
         if ( !b ) {
           zahl = basis;
           for(int i = 2; i <= exponent; i++){
             zahl *= basis;
           }
           JOptionPane.showMessageDialog(null,"Die Potenz hat den Wert " + zahl);
         }

Wobei es dann noch sprechender wird, wenn du die Variable "b" auf "fertig" umbenennst.
 

Lestas89

Bekanntes Mitglied
Hallo Dompteur.

Wo genau im Code muss ich deins einfügen? Kannst du es mal in meinen Code reinpacken, sodass ich weiß, wo das hingehört?
 

Dompteur

Top Contributor
Hey, das schaffst du doch auch allein !
Ich habe deinen Code nur ein klein wenig verändert. Wenn du deinen Code selbst geschrieben hast, dann solltest du auch meinen Code verstehen.
 

Lestas89

Bekanntes Mitglied
Ich habe meinen Code wirklich selbst geschrieben. Verstehe deinen Code aber wirklich nicht. Was muss ich denn bei mir ersetzen? Und warum läuft deine Schleife erst bei 2 los?
 

Lestas89

Bekanntes Mitglied
Ich frage mal anders, vllt versteh ich es dann und weiß wie ich es verändern muss:

Was ist an deinem Programmausschnitt anders als bei meinem? Wie muss ich das verändern? Ich verstehe nämlich deinen Code nicht.
 

Dompteur

Top Contributor
Der Hauptunterschied ist, dass du System.exit aufrufst. Du hast zwar eine Abbruchvariable in der Schleife, diese kommt aber nicht zur Wirkung.

Ich berechne den Wert dieser Variablen direkt. Dabei verwende ich kein if, sondern weise das Ergebnis der Vergleichsoperation der Variablen direkt zu. Aber das ist nur ein kosmetischer Unterschied.
Dann kommt ein if, in dem geprüft wird, ob weitergemacht werden soll. Wenn kein Abbruch gewünscht ist, erfolgt die Berechnung und die Ergebnisausgabe.
Nach dem if bist du am Ende der Schleife. Wenn ein Abbruch gewünscht wird, bist du am Ende der Methode und das Programm endet.
 

Lestas89

Bekanntes Mitglied
Ich weiß nämlich immer noch nicht an welcher Stelle ich deinen Code ersetzen muss. :D Aber wenn es so klappt, dann lass ich es mal so :) Danke für deine Hilfe
 

Neue Themen


Oben