Potenzen in Schleifen

Alen123

Mitglied
Hallo, ich sitze gerade an einer Übungsaufgabe in der ich Potenzen mittels Schleifen darstellen soll. Das ist mein Ansatz bis jetzt:
Java:
import java.util.Scanner;


public class Programm2 {
    
    public static void main(String[] args) {
      Scanner alen = new Scanner(System.in);
      
      System.out.println("Hallo, geben sie nun die zu potenzierende Zahl ein.");
       int pot = alen.nextInt();
      System.out.println("Wie oft soll sie potenziert werden?");
       int zahl = alen.nextInt();
       int counter = 0;
      
       do{
          pot = pot*pot;
          counter++;
       }while (counter < zahl);
      
       System.out.println("Der Wert beträgt "+pot);
    }
}

Mein Problem ist dass ich keine weg finde um x^x irgendwie darzustellen.
Vielen Dank schonmal für die Hilfe!!!
 

Jw456

Top Contributor
nicht mit sich selbst sodern mit der Basis
5^3
5 Basis
3 Exponent (anzahl -1)

5 * 5 * 5 (zwei Durchgänge)

Tipp: merke dir die Basis
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Dein Code hat ein zusätzliches Problem: 0 (EDIT: im Exponenten) wird nicht korrekt gerechnet.

Von vorne: a^b ist ein Produkt, in dem genau b-mal der Faktor a und zusätzlich einmal der Faktor 1 auftaucht.

Code:
a^0 = 1
a^1 = 1 * a = a^0 * a
a^2 = 1 * a * a = a^1 * a
a^3 = 1 * a * a * a = a^2 * a

Man könnte salopp auch sagen: das neue Produkt (z. B. a^4) ist das aktuelle Produkt (a^3) multipliziert mit der Basis (a). Das erste Produkt (a^0) ist immer 1.
 

Jw456

Top Contributor
Java:
public static void main(String[] args) {
            Scanner alen = new Scanner(System.in);

            System.out.println("Hallo, geben sie nun die zu potenzierende Zahl ein.");
            int pot = alen.nextInt();
            System.out.println("Wie oft soll sie potenziert werden?");
            int zahl = alen.nextInt();
            int counter = 0;
            int basis = pot; //merken der Basis
          
            do{
                pot = pot*basis; // rechnen mit der basis nicht mit sich selbst
                counter++;
            }while (counter < zahl-1);  //ein Durchlauf weniger als expo warum überlege selber

            System.out.println("Der Wert beträgt "+pot);
        }
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Mir stellt sich das so da, dass da ein Problem die Bezeichner sind und damit verbunden auch die Mehrfachnutzung einer Variable.

Jede Variable sollte genau einen Zweck haben. Und dieser sollte im Namen klar zu erkennen sein.

Mathematisch wird die Basis angegeben. Also sollte post erst einmal Basis heißen.

Dann wird der maximale Exponent angegeben ... das wäre die zweite Variable.

Und dann gibt es eine Potenz die du berechnest ... das wäre eine dritte Variable. Dazu verwendest du nicht einfach die Eingabe!

Ganz formellen Ansatz:
Jetzt kann man sich überlegen: was ist die Potenz genau? Was ist zu berechnen?

Aber da heisst es erst einmal: Vergiss programmierung! Erst mal selbst klar machen ....

Exponent 0 - Was kommt raus?
Exponent 1 - Was kommt raus?
...
Das einmal aufstellen. Dazu zu Not einen Taschenrechner zur Hand nehmen und für Basis 2, 3, 4, 5 aufstellen.

Was für ein Verhalten siehst du?

(Das kann man ggf. auch direkt machen, so ma genug Ahnung von Mathe hat. Aber auch ohne Ahnung von Mathe kann man es lösen!)

Und jetzt soll man in einer Schleife alle Potenzen aufschreiben - was ist der Zusammenhang? Wenn man den Wert für x hat, wie bekomme ich den Wert für x+1?

Dann haben wir ggf. etwas wie f(0)= .... Und f(x) = irgendwann mit f(x-1).
Und dann kann man in einer Schlwife anfangen, f(0) ausgeben und dann Schriff für Schritt ein neues f(x) berechnen.

Oder ganz kurz und schmerzlos:
Oder einfach das Vorgehen von Hand durchspielen. Alle 2er Potenzen Aufschreiben: kannst du das? Was machst du da?
Formuliere es so, dass jeder es machen könnte. Und dann übersetze es in Java. Aber erst wenn es im Detail beschrieben wurde.
 

Jw456

Top Contributor
Java:
ublic static void main(String[] args) {
        Scanner alen = new Scanner(System.in);

        System.out.println("Hallo, geben sie nun die zu potenzierende Zahl ein.");
        int pot = alen.nextInt();
        System.out.println("Wie oft soll sie potenziert werden?");
        int zahl = alen.nextInt();
        int counter = 0;
        int basis = pot;
        if (zahl != 0) {
            while (counter < zahl - 1) {
                pot = pot * basis;
                counter++;
            }
        } else {
            pot=1;
        }

        System.out.println("Der Wert beträgt " + pot);
    }


negative exponenten sind falsch müssen auch noch beachtet werden.
 

KonradN

Super-Moderator
Mitarbeiter
Ist es wirklich so, dass ihr in keiner Weise auf die Lesbarkeit eures Codes achtet? Das bezieht sich nicht auf @Alen123 sondern auf die tollen "Lösungen", die hier dann gepostet werden. Ist ja toll, wenn ihr helfen wollt, aber ich bezweifle den Mehrwert dieser Lösungen - oder soll es explizit als schlechtes Beispiel dienen?

Schauen wir uns die Aufgabe einfach einmal an und lösen diese:

Die Potents ist definiert als 1 * basis * basis * basis .....
Wobei dieses * basis genau Exponent-mal gemacht wird.

Also kann man das geradlinig aufbauen:
- basis := Usereingabe-Zahl
- exponent := Usereingabe-Zahl
- ergebnis := 1
- exponent mal machen wir:
--> ergebnis := ergebnis * basis

Das wäre eine Beschreibung. Wir können das einmal durchspielen. Kann man das durchspielen ohne Ahnung von der Aufgabe zu haben?
Sieht erst einmal gut aus, oder? Würdet Ihr hin bekommen.

Also dann bauen wir das einmal auf:
a) Die Eingabe packe ich einfach mal in einem Block zusammen. Sinnvole Namen! Auch ein Scanner muss bernünftig benannt werden! Ich habe einfach scanner verwendet, was ok sein drüfte, da garantiert keine anderen Scanner verwendet werden. userInputScanner könnte man aber z.B. auch verwenden, wenn man da etwas genauer sein möchte. Damit haben wir:
Java:
        Scanner scanner = new Scanner(System.in);

        System.out.println("Hallo, geben sie nun die zu potenzierende Zahl ein.");
        int basis = scanner.nextInt();
        System.out.println("Wie oft soll sie potenziert werden?");
        int exponent = scanner.nextInt();

b1) Ok, dann ist die Frage: Will man Exponenten < 0 behandeln? Dann braucht man eine if Abfrage. Ist hier mal geschenkt - und war auch erst einmal nicht Bestandteil des skizzierten Lösung.

b2) Also kommt die einfache Berechnung. Und damit kommt man zu einer einfachen, kurzen Lösung:
Java:
        int result = 1;
        for (int counter = 1; counter <= exponent; counter++) {
            result = result * basis;
        }

c) Die Ausgabe ist dann natürlich einfach und trivial:
Java:
        System.out.println("Der Wert beträgt " + result);

So hat man dann einen Code, der doch relativ gut lesbar ist. Man könnte da noch in Methoden unterteilen und so.

Das einfach einmal um kurz auf zu zeigen, wie ich eine Lösung erwarten würde - von jemandem, der gewisse Zeit im Forum akiv ist und sich relativ viel mit Java beschäftigt hat. Das ist ja Thema in fast jedem Anfänger-Thread...
 

Sirmeabe

Mitglied
Hallo Leute,
Die Aufgabe fand ich gut und wollte es auch lösen. Habe aber while benutzt und ja das Ergebnis ist da, meine logische Denkweise ist folgende.
Java:
int a=3;// Basis
int b=6;// Exponent
int c=1;// Ergebnis
int d=1;// Zähler
  while (d<=b){
    
      c=c*a;
      System.out.println("wert "+ c);
      d++;
      
  }

Habe kein Scanner benutzt, da ich auf der Arbeit bin und benutze mein iPhone mit einen online Editor.
Meine Lösung ist nicht so sauber wie bei meinem Vorredner. Bin ja halt noch am Anfang und am üben. Schaut es euch einfach mal an. Werde mich über Feedback freuen.
 

Jw456

Top Contributor
Auf jeden Fall solltest du dir angewöhnen sinnvolle Bezeicher zu benutzen.
Nicht nur ein Buchstabe.

Ein neativer Exponent wird ein falsches Ergebnis liefern.
Gib in dem Fall eine Fehlermeldung aus.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Werde mich über Feedback freuen.
Wenn Du Code schreibst wie hier:
Java:
int a=3;// Basis
int b=6;// Exponent
int c=1;// Ergebnis
int d=1;// Zähler

Dann mach daraus doch einfach direkt;
Java:
int basis=3;
int exponent=6;
int ergebnis=1;
int zaehler=1;

Eine Entwicklungsumgebung bietet Dir dazu auch die notwendige Unterstützung und die findet sich unter Refactoring. Da mal schauen, ob du die Funktionalität findest. Das Rename Refactoring hat auch in der Regel ein Shortcut - in IntelliJ unter Windows drücke ich einfach shift F6 und kann direkt etwas umbenennen.

Und das wird immer gemacht, wenn Du feststellst, dass ein Name nicht genug oder was falsches aussagt. Und das hast Du ja, da Du ja einen Kommentar notwendig gehalten hast.

Das nur als kleine Anregung - das könnte Dir das Leben in Zukunft start vereinfachen.
 

Jw456

Top Contributor
PS. bei Exponent = 0 wird es keine Ausgabe geben da du garnicht in die Schleife kommst.
Dein Ergebnis ist zwar 1 aber es wird nicht ausgegeben.

Ausgabe in der Schleife ist zwar für die Konntrolle Beobachtung gut. Aber eine Filnale Ausgabe sollte schon sein.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
jetz gibts IT schon so lange ... und man muss immer noch alle variablen mit einem buchstaben bezeichnen ... bei 24 variablen ist halt schluss.. geht nix mehr
<Spassmodus switch="on">
Quatsch. Da kann man nummerieren! i1 - i9999 sind Problemlos drin. Und wenn das nicht reicht, dann nutzt Du mein Variablennamen Generator Plugin für Intellij - da bekommst du dann Variablennamen, die von UUIDs abgeleitet worden sind:
u_a2606112_a9c9_11ec_b909_0242ac120002

Damit ist also klar, dass es da keine wikliche Begrenzung gibt.

Und auch ein HighLight: Mein Plugin VariableDescriptionPopup:

Wenn Du Variablen mit meinem ersten Plugin erzeugst als z.B.:
int u_a2606112_a9c9_11ec_b909_0242ac120002; // Irgend eine Beschreibung

Und du dann mit der Maus im Code auf eine Variable gehst, dann kommt von IntelliJ ein kleines Popup mit dem Kommentar.

@mihe7 scheint meine Plugins auch zu nutzen - daher liebt er offensichtlich ja diese Kommentare, denn die werden da ja dann immer sehr schön eingeblendet.

<Spassmodus switch="off">

Also bitte nur als Spaß verstehen - das ist nicht ernst gemeint :)
 

mihe7

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
Z Potenzen Java Basics - Anfänger-Themen 10
B Potenzen ohne Math.pow Java Basics - Anfänger-Themen 4
T Erste Schritte Funktionsweise Potenzen in Java Java Basics - Anfänger-Themen 3
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
S beliebige Potenzen Java Basics - Anfänger-Themen 11
A Potenzen ohne math.pow Java Basics - Anfänger-Themen 1
A Potenzen, Exponenten, Basis Java Basics - Anfänger-Themen 3
W Hilfe bei Schleifenprogrammierung mit Potenzen Java Basics - Anfänger-Themen 5
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Mit Potenzen rechnen "Problem" Java Basics - Anfänger-Themen 3
F Große Potenzen berechnen Java Basics - Anfänger-Themen 6
S Programm mit Potenzen Java Basics - Anfänger-Themen 9
P Exponenten bei Potenzen multiplizieren Java Basics - Anfänger-Themen 4
G Potenzen Java Basics - Anfänger-Themen 8
P Potenzen von 2 anzeigen lassen Java Basics - Anfänger-Themen 4
B for- und while anweisung - 2er Potenzen generieren Java Basics - Anfänger-Themen 6
B Problem mit Potenzen/ Double/ Bestimmung der Eulerzahl Java Basics - Anfänger-Themen 2
T schleifen Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
Mikejr Schleifen Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
K geschachtelte "for-Schleifen" Java Basics - Anfänger-Themen 3
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
W Schleifen Java Basics - Anfänger-Themen 36
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
A Schleifen Verzweigungen Java Basics - Anfänger-Themen 18
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
D Schleifen Problem Java Basics - Anfänger-Themen 2
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
A Schleifen in Java Java Basics - Anfänger-Themen 4
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
C Schleifen Durchlauf Java Basics - Anfänger-Themen 7
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
J Schleifen Wiederholendes Zeichenmuster Java Basics - Anfänger-Themen 4
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
G Input/Output Schleifen Durchlauf Java Basics - Anfänger-Themen 5
A Erste Schritte Schleifen Java Basics - Anfänger-Themen 5
J Muster und Schleifen Java Basics - Anfänger-Themen 33
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
C Schleifen Java Basics - Anfänger-Themen 12
E geschachtelte for-schleifen Java Basics - Anfänger-Themen 6
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
kokojamboo92 Schleifen und Arrays Java Basics - Anfänger-Themen 7
N Problem mit Schleifen Java Basics - Anfänger-Themen 20
O Array, geschachtelte For-Schleifen Java Basics - Anfänger-Themen 34
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
L Schachbrettnummerierung mit Schleifen.. Java Basics - Anfänger-Themen 3
H Schleifen Java Basics - Anfänger-Themen 8
L Zahlentripel und for-Schleifen Java Basics - Anfänger-Themen 2
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
T Erste Schritte Schleifen-Stop Java Basics - Anfänger-Themen 14
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
L Was heißt terminieren bei Schleifen? Java Basics - Anfänger-Themen 3
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
C Erste Schritte While-Schleifen-Problem Java Basics - Anfänger-Themen 3
W Schleifen bei Greenfoot Java Basics - Anfänger-Themen 4
B Operatoren Stopp von Schleifen Java Basics - Anfänger-Themen 9
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
E Muster auf der Konsole ausgeben lassen (Schleifen) Java Basics - Anfänger-Themen 7
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sternchenpyramide mit For-Schleifen erstellen Java Basics - Anfänger-Themen 9
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
arti28 Erste Schritte For-Schleifen und While-Schleifen, String als Muster ausgeben. Java Basics - Anfänger-Themen 3
T [Schleifen] Schleifenproblem Java Basics - Anfänger-Themen 4
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
O Geschachtelte For-Schleifen Java Basics - Anfänger-Themen 1
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
Z Frage zu for-Schleifen Java Basics - Anfänger-Themen 5
M Wie kann ich eine Ausgabe vervielfachen? (Schleifen) Java Basics - Anfänger-Themen 4
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
T Erneute Frage zu Schleifen Java Basics - Anfänger-Themen 4
V Schleifen die nicht voneinander abhängen! (für CAN-BUS) Java Basics - Anfänger-Themen 10
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
S for-Schleifen Problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben