Alle Zweierpotenzen bis 2^10 ausgeben lassen

ceko1907

Mitglied
Hallo Leute,

ich habe eine Aufgabe von der Uni, die ich irgendwie nicht lösen kann. Ich habe eigene Ideen gehabt aber komme einfach nicht zum Schluss. Man soll alle Zweierpotenzen bis 2^10 ausgeben lassen.

Hier ist das was ich bisher habe:

//Lassen Sie auf der Konsole alle Zweierpotenzen bis 2^10 ausgeben.
Also 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

Java:
public class B_Zweierpotenzen {
   public static void main (String [] args) {
     
     int basis = 2;
     int exponent=1;
     
     for (exponent = 1; exponent<=10; exponent++){
       basis = basis * 2;
     }
     System.out.println (basis);
   }
}

So gibt mir die Konsole leider nur 2048 aus.

Danke für eure Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
JA! Danke. Aber es ist noch nicht ganz das was gesucht war. Jetzt kommt folgendes raus:

32 (er hat also bei 2^5 angefangen)
64
128
256
512
1024
2048

Das sollte aber rauskommen:

2 (soll aber bei 2^1 anfangen)
4
8
16
32
64
128
256
512
1024
 
Zuletzt bearbeitet:
Wenn ich deinen Code ausführen (und die Ausgabe innerhalb der Schleife mache) dann kommt das gewünschte Ergebnis raus 🙂
Kann es vielleicht sein das dein Ausgabefenster zuklein ist und du nur raufscrollen musst?
 
Vermutlich hat er die Ausgabe nach dem 'basis=basis*2' gemacht. Dann sollte es von 4 bis 2048 gehen.

Also entweder einen anderen Startwert für 'basis' wählen, oder die Ausgabe an eine andere Stelle in der Schleife verschieben (so viele Möglichkeiten gibts da ja nicht 😉 )
 
Wenn ich deinen Code ausführen (und die Ausgabe innerhalb der Schleife mache) dann kommt das gewünschte Ergebnis raus 🙂
Kann es vielleicht sein das dein Ausgabefenster zuklein ist und du nur raufscrollen musst?


Tatsächlich, da steht noch was oben drüber 🙂 Aber:
Jetzt steht bei mir:

4
8
16
32
64
128
256
512
1024
2048

Das heißt die 2 fehlt am Anfang und die 2048 soll da nicht stehen.
 
Vielleicht rekursiv. So:

Code:
    public static int zweiHochN(int n) {
        int enn = 0;
        if (n==0) {
            System.out.println(" "+1);
            return 1;
        } else {
            enn = 2*zweiHochN(n-1);
            System.out.println(" "+enn);
            return enn;
        }
    }
 
Nette Idee JStein52, aber vielleicht für einen Anfänger doch etwas zu hoch.

@ceko1907 passt die Ausgabe nun? (mit dem Hinweis von Tarrew)
Auch klar warum die Ausgabe bei 4 begonnen hat bzw. bis 2048 läuft?
 
Vermutlich hat er die Ausgabe nach dem 'basis=basis*2' gemacht. Dann sollte es von 4 bis 2048 gehen.

Also entweder einen anderen Startwert für 'basis' wählen, oder die Ausgabe an eine andere Stelle in der Schleife verschieben (so viele Möglichkeiten gibts da ja nicht 😉 )


Danke an alle. Ich habe jetzt einfach am Anfang die "int basis = 1" gesetzt. Jetzt passt alles 🙂

Das einzige Problem was ich jetzt habe ist, ich verstehe nicht ganz, wieso die "basis" gleich 1 gesetzt werden muss. Die Basis ist doch bei einer Zweierpotenz immer 2 und der Exponent beginnt mit der 1 und geht schließlich bis 10. Ich bin verwirrt.
 
Die Schleife berechnet dir für den aktuellen Exponenten das Ergebnis. Wie du schon sagt startet "exponent" mit dem Wert 1.
Sprich der 1.Schleifendurchlauf sollte dir als Ergebnis 2 liefern.
Wenn du aber nun schon mit "basis = 2" startest, bräuchtest du ja keine Berechnung mehr für exponent = 1 sondern müsstest nur den Wert ausgeben.
 
Die Schleife berechnet dir für den aktuellen Exponenten das Ergebnis. Wie du schon sagt startet "exponent" mit dem Wert 1.
Sprich der 1.Schleifendurchlauf sollte dir als Ergebnis 2 liefern.
Wenn du aber nun schon mit "basis = 2" startest, bräuchtest du ja keine Berechnung mehr für exponent = 1 sondern müsstest nur den Wert ausgeben.

Bis zu deinem letzten Satz kann ich dir folgen. Aber der Punkt ist doch, dass ich eine Zweierpotenz berechnen soll. Beudeutet das nicht, dass die "basis = 2" sein muss?
 
Java:
public class NP2 {
   public static void main(String[] args) {
     int out = 2;
     for(int n = 0; n < 10; n++) {
       System.out.println(out);
       out <<= 1;
     }
   }
}
Ganze 9 Zeilen. 😉
Ist das für Anfänger auch zu hoch oder habe ich etwas missverstanden?
 

Zurück
Oben