Java Potenz mit for-Schleife?

5 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; 
MrGAW 
Fragesteller
 02.02.2021, 16:34

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

0
codinghelp  02.02.2021, 16:39
@MrGAW

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

2
MrGAW 
Fragesteller
 02.02.2021, 16:46
@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
jaannippon  02.02.2021, 16:55
@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
DerAndereEine  03.02.2021, 07:49
@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
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

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
MrGAW 
Fragesteller
 02.02.2021, 16:29

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

0

Wenn du n=4 gegeben hast und die 3 als Potenz genommen wird muss du immer die Zahl eins unter n benutzen, dass ist dann n < 4 also 3 oder n < 23 ist läuft dir Schleife bis 22.

Wenn du n <= benutz wird die Zahl die n hat noch mitgenommen, also: n <= 38 läuft die Schleife bis zur 38, weil kleiner und gleich 38.

xxxcyberxxx  02.02.2021, 17:02
Wenn du n=4 gegeben hast und die 3 als Potenz genommen wird muss du immer die Zahl eins unter n benutzen,

das ist nicht korrekt, es kommt immer auf die Schleifenvariable an - das wäre gültig, wenn du diese mit einer 0 initialisierst ...

1

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();
}