Erste Schritte n te Potez von 2

Hallo!

Ich versuche mit einer for-Schleife die n te Potenz zur Basis 2 auszurechnen. Aber aus irgendeinem Grund gelingt mir das nicht. Mein Programm sieht so aus (habe jetzt den Teil mit public static voi.... usw. rausgenommen, es klappt alles wunderbar, nur nicht so wie ich es haben möchte):
Java:
String p = JOptionPane.showInputDialog("Wert Potenzgrad");
int n = Integer.parseInt(p);
int erg;

if (n == 0) {
	erg = 1;
	System.out.println(erg);
} else for (int i = 1; i <= 2 * i; i *= 2) {
	erg = 2 * i;

	System.out.println(erg);
}
Ich vermute die Bedingugn macht alles irgendwie falsch, aber ich habe auch keine Idee welche andere Bedingung ich sonst nehmen könnte.
 
Zuletzt bearbeitet von einem Moderator:

knilch

Bekanntes Mitglied
Java:
public static void main(String[] args) {
    String p = JOptionPane.showInputDialog("Wert Potenzgrad");
    int n = Integer.parseInt(p);
    int erg = 2;

    if(n == 0){
        erg = 1;
        System.out.println(erg);
    }
    else {
        for(int i = 0; i < n; i++ ){
            System.out.println(erg);
            erg *= 2;
        }  
    }
}
Hi,
die Abbruchbedingung im for-loop ist falsch. Versuch es mal so:
 
Zuletzt bearbeitet:
Hallo knilch,

das klappt super, danke !

Wenn ich z.B. für n =3 eingebe, bekomme ich auf der Konsole dann folgendes Ergebnis:

2
4
8.
Wie kann ich das denn so umformen, dass ich nur die 8 angezeigt bekommen?

Und was ich nicht besonders verstehe ist, warum das jetzt funktioniert? Weil in der Anweisung kein i vorkommt.
 

stg

Top Contributor
Du kannst die n-te Pozenz von 2 übrigens auch ganz leicht über einen Bit-Shift der 1 berechnen:

Java:
public static void main(String ... args) {
  pow(3);      // Ausgabe:    8
  pow(10);   // Ausgabe: 1024
}
  
public static void pow(int n) {
  System.out.println(1 << n);
}
 
Hey!

Danke für die Antworten :)

Aber was mich immer bei dem ersten Vorschlag:

Code:
String p = JOptionPane.showInputDialog("n te Potenz");
   int n = Integer.parseInt(p);
   int erg = 2;
     
   if(n == 0){
     erg = 1;
     System.out.println(erg);
   }
   else
     for(int i = 1; i < n; i++ ){
       
       erg *=2;    
     }
   System.out.println(erg);

verwirrt ist, warum die Schleife in dem Fall funktioniert?? Weil in der Anweisung das i, die Laufvariable gar nicht vorkommt. Also woher weiß das Programm denn, dass die Bedingung erfüllt ist? o_O
 

Neue Themen


Oben