2n Potenzieren ohne Math.pow oder pow

Piravin

Mitglied
Ich komme hier nicht weiter und weiß auch nicht wo mein Fehler ist.
Ich möchte 2n hoch potenzieren mit der Schleife und das ist mein Code
Ich sollte das als meine HA abgeben aber finde einfach den Fehler nicht bzw weiß ich nicht warum es nicht klappt

CODE:

public class Potenz {
public static void main (String [] args) {

int zahl=2;
int fakultät=1;
int zweihochN=1;

for(int a=1; a<=10;a++) {



fakultät= fakultät*a;

int b= a*a;

do
{
zweihochN=zahl*zweihochN;
zahl++;
}
while (zahl <=1);






System.out.print("n: " + a);

System.out.print(" n*n: " + b);

System.out.print(" n!:" + fakultät);

System.out.println(" 2 hoch n: " + zweihochN );
}

}
}
 
Bitte verwende zum Zeigen von Code die Code-Tags: Das </> Symbol ganz links im Editor.

Was klappt denn nicht? Eine Fehlerbeschreibung ist in solchen Fällen immer hilfreich.

So auf den ersten Blick würde ich sagen, die Abbruchbedingung passt schon mal nicht. "zahl" hat anfangs den Wert 2 die Bedingung der do..while Schleife ist also nicht erfüllt, denn zahl ist sofort größer als 1. Die Rechnung stimmt auch nicht. 2 hoch 4 würde so berechnet:
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
Deine Rechnung wäre ungefähr so:
2 * 2 = 4
4 * 3 = 12
12 * 4 = 48
 
Zuletzt bearbeitet:
Bitte verwende zum Zeigen von Code die Code-Tags: Das </> Symbol ganz links im Editor.

Was klappt denn nicht? Eine Fehlerbeschreibung ist in solchen Fällen immer hilfreich.

So auf den ersten Blick würde ich sagen, die Abbruchbedingung passt schon mal nicht. "zahl" hat anfangs den Wert 2 die Bedingung der do..while Schleife ist also nicht erfüllt, denn zahl ist sofort größer als 1. Die Rechnung stimmt auch nicht. 2 hoch 4 würde so berechnet:
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
Deine Rechnung wäre ungefähr so:
2 * 2 = 4
4 * 3 = 12
12 * 4 = 48
ja stimmt genau das kommt raus und ich möchte, dass es so
2
4
8
16
...
rauskommt.
Was muss ich den machen, dass es so rauskommt
 
Bitte verwende zum Zeigen von Code die Code-Tags: Das </> Symbol ganz links im Editor.

Was klappt denn nicht? Eine Fehlerbeschreibung ist in solchen Fällen immer hilfreich.

So auf den ersten Blick würde ich sagen, die Abbruchbedingung passt schon mal nicht. "zahl" hat anfangs den Wert 2 die Bedingung der do..while Schleife ist also nicht erfüllt, denn zahl ist sofort größer als 1. Die Rechnung stimmt auch nicht. 2 hoch 4 würde so berechnet:
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
Deine Rechnung wäre ungefähr so:
2 * 2 = 4
4 * 3 = 12
12 * 4 = 48
das kommt in den terminal raus:
n: 1 n*n: 1 n!:1 2 hoch n: 2
n: 2 n*n: 4 n!:2 2 hoch n: 6
n: 3 n*n: 9 n!:6 2 hoch n: 24
n: 4 n*n: 16 n!:24 2 hoch n: 120
n: 5 n*n: 25 n!:120 2 hoch n: 720
n: 6 n*n: 36 n!:720 2 hoch n: 5040
n: 7 n*n: 49 n!:5040 2 hoch n: 40320
n: 8 n*n: 64 n!:40320 2 hoch n: 362880
n: 9 n*n: 81 n!:362880 2 hoch n: 3628800
n: 10 n*n: 100 n!:3628800 2 hoch n: 39916800
 
Was muss ich den machen, dass es so rauskommt
Die Schritte sind immer gleich: Als erstes schaust Du. was Du machen würdest, wenn Du es berechnen solltest.

Mache es mit Stift und Papier und überlege genau, was Du rechnest. Wo kommt welcher Wert her.

Wenn Du das hast, dann ist das Schreiben des Codes einfach.

Es ist einfach der falsche Ansatz, irgend was in Code hin zu schreiben um dann rumzuprobieren, ob man irgendwie das Richtige hin bekommt.

Wobei das @temit Dir sogar schon eigentlich hin geschrieben hat.
 
Die Schritte sind immer gleich: Als erstes schaust Du. was Du machen würdest, wenn Du es berechnen solltest.

Mache es mit Stift und Papier und überlege genau, was Du rechnest. Wo kommt welcher Wert her.

Wenn Du das hast, dann ist das Schreiben des Codes einfach.

Es ist einfach der falsche Ansatz, irgend was in Code hin zu schreiben um dann rumzuprobieren, ob man irgendwie das Richtige hin bekommt.

Wobei das @temit Dir sogar schon eigentlich hin geschrieben hat.
Ich bin ganz neu in Java deswegen weiß ich nicht was ich genau was ich da ändern soll. Weiß nur "zahl" muss geändert werden, wie ich es verstanden habe. Bin im 1 Semester von Programmieren
 
Du sollst am Code erst einmal gar nichts ändern. Du sollst Dir genau überlegen, was denn da genau gemacht werden muss, um die 2er Potenz zu berechnen.

Erst, wenn Du das genau verstanden und eine exakte Beschreibung in Worten gemacht hast, kannst Du anfangen Code zu schreiben.
 
Begriffe wie Basis und Exponent sind dir aber schon ein Begriff oder? Wieso verwendest du die nicht als Variablennamen?

Und was soll das für eine Fakultätberechnung sein?
 
deswegen weiß ich nicht was ich genau was ich da ändern soll.
Bei deiner Rechnung gehst du ähnlich wie bei der Fakultät vor, indem du einen Operanden immer um eins erhöhst. Für die Potenzierung "2 hoch " bleibt ein Operand jedoch konstant immer auf den Wert 2.

Außerdem denk mal darüber nach, ob du noch eine do..while-Schleife innerhalb der for-Schleife brauchst.
 
Zuletzt bearbeitet:

Zurück
Oben