Hey,
wir sollen in Informatik ein Programm in Java Programmieren, dass alle Armstrongzahlen von 0 bis n ausgibt. n wird dabei von Nutzer eingegeben.
Für alle die nicht wissen was Armstrongzahlen sind:
"Armstrongzahlen sind Zahlen, deren Summe ihrer Ziffern, jeweils potenziert mit der Stellenanzahl der Zahl, wieder die Zahl selbst ergibt."
Nun habe ich ein Programm geschrieben und es tut nicht was es soll -.- Ich hab jetzt schon ewig rumprobiert, aber irgendwie tut es nie das was es soll. In de momentanen Fassung gibt es einfach nur eine 1 aus, das Programm scheint aber im Hintergrund irgendwie unendlich weiter zu laufen.
Vielleicht könnt ihr mir ja helfen meine Fehler zu finden.
Ich habe übrigens bewusst nicht Math.pow() benutzt, da wir die Potenz mit einer Schleife berechnen sollen.
wir sollen in Informatik ein Programm in Java Programmieren, dass alle Armstrongzahlen von 0 bis n ausgibt. n wird dabei von Nutzer eingegeben.
Für alle die nicht wissen was Armstrongzahlen sind:
"Armstrongzahlen sind Zahlen, deren Summe ihrer Ziffern, jeweils potenziert mit der Stellenanzahl der Zahl, wieder die Zahl selbst ergibt."
Nun habe ich ein Programm geschrieben und es tut nicht was es soll -.- Ich hab jetzt schon ewig rumprobiert, aber irgendwie tut es nie das was es soll. In de momentanen Fassung gibt es einfach nur eine 1 aus, das Programm scheint aber im Hintergrund irgendwie unendlich weiter zu laufen.
Vielleicht könnt ihr mir ja helfen meine Fehler zu finden.
Ich habe übrigens bewusst nicht Math.pow() benutzt, da wir die Potenz mit einer Schleife berechnen sollen.
Code:
class Armstrong {
public static void main (String args[]) {
int n = Integer.parseInt(args[0]);
int summe;
summe = 0;
int ziffer;
for(int zahl = 1; zahl <= n; zahl++){
int k = 0;
int temp = zahl;
int temp2 = zahl;
while(temp > 0){
temp = temp/10;
k++; //feststellen, wie viele Ziffern die Zahl hat
}
do {
ziffer = zahl % 10; // letzte Ziffer
int temp3 = ziffer;
for(int i=1; i < k; i++){
ziffer = ziffer*temp3; //Potenz der Ziffer berechnen
}
summe = summe + ziffer;
zahl = zahl/10; // letzte Ziffer weg, da ganzzahlige Div.
} while (zahl > 0);
if(summe == temp2){
System.out.println(summe);
}
}
}
}