JAVA Schleifen: vorherigen Wert mit sich selbst multiplizieren?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
#define MAX 10

int preis = 1;
int counter = 1;

while(counter < MAX)
{
  System.out.println("Kosten:" + preis);
  preis = preis * 2;
  counter++;
}

Sollte so klappen. Der Preis entspricht jeweils dem doppelten des vorherigen.

Woher ich das weiß:Studium / Ausbildung – Masterstudium Elektrotechnik - Schwerpunkt Embedded Systems
ohwehohach  12.03.2021, 13:13

Also kostet 1 Apfel 1€, 2 Äpfel 2€, 3 Äpfel 4€, 4 Äpfel 8€...?

1
Gehilfling  12.03.2021, 13:14
@ohwehohach

Korrekt. Zumindest wird das über SysOut ausgegeben. Man könnte die Ausgabe noch erweitern, um den Apfel-Index (hier: counter) auszugeben.

0
wunschname0302  12.03.2021, 13:29
@Gehilfling

Mhh.... mit Embedded Systems solltest Du es eigentlich besser wissen. Aber normalerweise würde jeder die Zählvariable mit i bezeichnen und bei 0 beginnen lassen (wenn sich nichts anderes aufdrängt)? Und gibt es in Java wirklich define-Direktiven? (Erinnert an C-/C++-Makros)

0
Gehilfling  15.03.2021, 07:36
@wunschname0302

Die Namen folgen weder einer Namenskonvention noch dem kleinstmöglichen Typ. Ansonsten wäre counter kein "int" sondern ein uint8 / unsigned char. Aber zur einfacheren Lesbarkeit hab ich das jetzt so genannt.

Hab lange kein Java mehr genutzt, daher war ich mir gar nicht sicher, ob es Präprozessordirektiven gibt wie in C. Aber korrekt, das ist ein C/C++ - Standard.

0
milchkanne1 
Fragesteller
 12.03.2021, 13:26

Mensch, dass ich da nicht gleich draufgekommen bin. Danke! So einfach eigentlich.

0

Da kannst Du auch gleich eine For-Schleife nehmen. Die übersichtlichste Lösung ist folgende:

double preisProÄpfel = 1;

// Warum diese Bedingung? Nun wir laufen normalerweise von 0
// bis < max. Dann hätten wir max-mal verdoppelt.
// Wir müssen aber immer einmal weniger verdoppeln
// als durch max angegeben ist, sonst wird Menge 1 doppelt gerechnet
for (int i = 0; i < max-1; i++)
{
    preisProApfel *= 2;
}
System.out.println(max + " Äpfel: " + preisProÄpfel + "€");

milchkanne1 
Fragesteller
 12.03.2021, 13:27

Stimmt, mit einer For-Schleife ist es auch total einfach. Danke für den Hinweis, probiere ich auch gleich mal als For-Schleife aus.

0
ohwehohach  12.03.2021, 13:28
@milchkanne1

Mit einer While-Schleife ist es genauso einfach, denn eine for-Schleife ist nichts anderes als eine "one-liner-Syntax" für eine while-Schleife.

0