Guten Tag zusammen,
leider habe ich ein kleines Problem mit dem Beenden meiner Do-While-Schleife.
Und zwar schreibe ich gerade an einem Programm, das mit Hilfe einer Funktion, die berechnet, ob eine Zahl fröhlich ist, alle fröhlichen Zahlen von 1 bis 1500 ausgibt.
Fröhliche Zahlen sind so definiert, dass sich ihre Ziffern so lange quadrieren und aufaddieren lassen, bis 1 entsteht. Alle anderen Zahlen geraten in einen Zyklus der Zahlen 20, 4, 16, 37, 58, 89, 145, 42.
Leider verlässt mein Programm die Schleife, deren Abbruchbedingung in Zeile 11 liegt, nicht, obwohl das Ergebnis eindeutig entweder 1 oder 20 wird, das hab ich per Output direkt vor dem Check der Bedingung ausprobiert und per Hand berechnet.
Ich hoffe, ihr könnt mir helfen.
Liebe Grüße,
Steen
leider habe ich ein kleines Problem mit dem Beenden meiner Do-While-Schleife.
Und zwar schreibe ich gerade an einem Programm, das mit Hilfe einer Funktion, die berechnet, ob eine Zahl fröhlich ist, alle fröhlichen Zahlen von 1 bis 1500 ausgibt.
Fröhliche Zahlen sind so definiert, dass sich ihre Ziffern so lange quadrieren und aufaddieren lassen, bis 1 entsteht. Alle anderen Zahlen geraten in einen Zyklus der Zahlen 20, 4, 16, 37, 58, 89, 145, 42.
Leider verlässt mein Programm die Schleife, deren Abbruchbedingung in Zeile 11 liegt, nicht, obwohl das Ergebnis eindeutig entweder 1 oder 20 wird, das hab ich per Output direkt vor dem Check der Bedingung ausprobiert und per Hand berechnet.
Java:
public class FröhlicheZahlen {
static int Happy (int Zahl){
int sum = Zahl;
do{
Zahl = sum;
sum = 0;
do{
sum = sum + (Zahl%10 * Zahl%10);
Zahl = Zahl/10;
} while (Zahl != 0);
}while ((sum != 1)|(sum != 20));
return sum;
}
public static void main(String[] args) {
for(int i=1; i<=1500; i++){
if(Happy (i)==1)
Out.println(i);
}
}
}
Ich hoffe, ihr könnt mir helfen.
Liebe Grüße,
Steen