Armstrong Programm geht nur bis 1000, aber nicht weiter

Kevin-sama

Neues Mitglied
Guten Abend,

und zwar habe ich ein Problem. Ich muss ein Armstrong Programm programmieren, wo der Benutzer/Anwender eine untere Grenze und obere Grenze eingibt und dann das Programm ausgibt, ob in diesem Intervall Armstrong Zahlen sind und wenn ja, diese auch Auflistet. Hier ist mein jetziges Programm:


Java:
import java.util.Scanner;

public class Armstrong {

public static void main(String[] arg){
    Scanner sc  =   new Scanner(System.in);
 
    System.out.println("Bitte die untere Grenze einfügen: ");
 
    int n = sc.nextInt();
 
    System.out.print("Bitte die obere Grenze einfügen: ");
 
    int l = sc.nextInt();
 
   sc.close();
 
   for(int i = n; i <=l; i++)
      if(isArmstrong(i))
       System.out.println(i + " ist eine Armstrongzahl!");
   }



    static boolean isArmstrong(int number) {
        boolean isArmNumber = false;
        int sum = 0;
        int tempNum = number;
        while (tempNum > 0) {
            int r = tempNum % 10;
            sum = sum + (r*r*r);
            tempNum = tempNum / 10;       
        }
        if (sum == number) {
            isArmNumber = true;
        }
        return isArmNumber;
     
     
    }

}

Folgendes Problem: Das Programm geht nur bis 1000 und spuckt Armstrong Zahlen, die über 1000 sind, nicht mehr aus. Aber wenn ist anstatt "r*r*r" "r*r*r*r" schreibe, spuckt er mir nur Armstrong zahlen aus, die über 1000 sind. Hat jemand eine Idee, wie man des beheben könnte, dass er alle Zahlen, auch über 1000, ausspuckt, die Armstrong sind?
 
Zuletzt bearbeitet:
Schau dir einfach mal die definition der Armstrong zahlen an: Jede Ziffer wird dabei mit der Anzahl an Stellen die die Zahl hat potenziert. Du hingegen nutzt immer die Potenz 3.
 

Zurück
Oben