JAVA Schleifen: vorherigen Wert mit sich selbst multiplizieren?
Hallo, ich habe erst mit Schleifen angefangen, und versuche ein Programm zu schreiben das folgendes macht:
1ste Apfel kostet 1 EUR
2te Apfel kostet 2 EUR (also 2*den Preis vom 1sten Apfel)
3teApfel kostet 4 EUR (also 2*den Preis vom 2ten Apfel)
...
Ich versuche das ganze in einer while-Schleife zu lösen aber komme nicht weiter.
Ich weiß noch, dass ich angeben muss was in der 2 Wiederholung der Schleife als "Grundlage" genutzt werden soll (da ja sonst immer Apfel1 gerechnet wird) aber ich schaffe diesen Schritt einfach nicht.
meine while-Schleife sieht so aus:
while(i<=max)
{Rechnen=Apfel1*Apfel1;
// ???
i++;
System.out.println("Kosten:" + Rechnen); }
Kann mir hier jemand einen Tipp geben wie ich das lösen kann, evtl auch auf einem anderen, für Anfänger geeigneten Weg.
DANKE!
2 Antworten
#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.
Korrekt. Zumindest wird das über SysOut ausgegeben. Man könnte die Ausgabe noch erweitern, um den Apfel-Index (hier: counter) auszugeben.
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)
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.
Mensch, dass ich da nicht gleich draufgekommen bin. Danke! So einfach eigentlich.
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 + "€");
Stimmt, mit einer For-Schleife ist es auch total einfach. Danke für den Hinweis, probiere ich auch gleich mal als For-Schleife aus.
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.
Also kostet 1 Apfel 1€, 2 Äpfel 2€, 3 Äpfel 4€, 4 Äpfel 8€...?