Java Potenz mit for-Schleife?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Schaffst du die Eingabe selbst? Die Schleife an sich ist relativ simpel gestrickt:

zahl = 1;
for(i=0;i<n;i++)
  zahl *= 3; 

Danke, eine Frage habe ich noch: Warum kann ich da nicht i<=n schreiben?

0
@MrGAW

Weil die Schleife dann 1 mal zu viel läuft --> du berechnest die n+1te Potenz

2
@codinghelp

Ah, ok habs verstanden, aber warum schreibt der i=0, dann kommt ja nur 27 raus, oder? Damit 81 raus kommt müsste er doch dann wieder i<=n schreiben, wenn er zahl=3 schreibt dann müsste es mit i<n gehen. Oder hab ich einen Denkfehler?

0
@MrGAW

Überleg dir, was du Bedingungen genau bedeuten. Du hast i mit 0 initialisiert. Im ersten Schleifendurchgang ist i 0. Dann wird i um eins erhöht; i ist jetzt 1. Test mit i=1<4 ist True, es geht also weiter. Der zweite Schleifendurchlauf beginnt. Danach wird i auf 2 erhöht; die Abbruchbedingung ist immer noch nicht erreicht. Dritter Schleifendurchlauf. i wird auf 3 erhöht; es geht weiter; vierter Schleifendurchlauf. Nun wird i auf 4 erhöht; nun ist i=4<4 falsch und es gibt keine weiteren Schleifendurchgänge. Insgesamt wurde die Schleife 4 Mal durchlaufen; genauso oft, wie gewollt.

3
@MrGAW

In der Welt des Programmierens laufen Schleifen standardmäßig von 0 an. Das liegt daran, weil Felder (Arrays) nullindiziert sind. Das erste Element hat den Index 0. Das bedeutet aber, dass i (Standardbezeichnung für die Schleifenvariable) nicht mit dem Wert n in die Verabeitung gehen darf, denn dann wird die Schleife einmal zu viel durchlaufen.

Da im Schleifenrumpf i gar nicht verwendet wird, hättest du sie genauso von 8 rückwärts laufen lassen können, solange i > 8-n ist.

Das Schleifenkonstrukt an sich ist flexibel.

Die Variable i zu nennen und bei 0 anfangen zu zählen sind Konventionen.

0

Hey, Potenzen lässt sich ganz einfach auch so oft multiplizieren, wie die Anzahl der Potenz, d.h.: 4^2 wären in java 4*4, natürlich gespeichert in einer Variable.

Ansonsten gibt es die Möglichkeit die Methode Math.pow() zu bentuzen. Dabei kommt die Basis an erster Stelle in die Klammer und die Potenz an zweiter.

Hoffe konnte dir damit weiterhelfen. :)

Mfg

Woher ich das weiß:Studium / Ausbildung

Danke für deine Antwort! Wie würde dann das in einer for-Schleife aussehen? Math.pow() dürfen wir leider nicht benutzen :(

0

Mit einer Schleife ist das ja langweilig. Verwirre deinen Lehrer doch ein bisschen und nimm einen Stream:

public static int pow3(int n) {
	return IntStream.generate(()->3).limit(n).reduce((a,b)->a*b).getAsInt();
}
Wie würde das gehen in BlueJ?

Nun, überlege dir doch mal, was "potenzieren" ist ... im einfachsten Fall, dass der Exponent ein (positiver) Integer ist - wie es hier vermutlich gefordert sein wird - ist es an sich nur das wiederholte Multiplizieren einer Zahl mit sich selbst

Dies könntest du durch eine Schleife lösen - anbieten würde sich eine for-Schleife, aber auch mit einer While-Schleife wird es gehen

Was möchtest Du wissen?