Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann?

Reykja

Aktives Mitglied
Bildschirmfoto 2020-04-12 um 19.22.14.png

Die erste Methode habe ich bereits implementiert.

Java:
public class Aufgabe3 {
    
    private static boolean isHarshadNumber(int number) {
        int quersumme = 0;
        int remainingDigits = number;
        while (remainingDigits > 0) {
            quersumme += remainingDigits % 10;
            remainingDigits /= 10;
        }
        return number % quersumme == 0;
    }

    private static int countHarshadNumbers(int start, int end) {
        int count = 0;
        for (int i = start; i < end; i++) {
            count++;

        }
        return count;
    }
        
    public static void main(String[] args) {
        //DIE NACHFOLGENDEN ZEILEN SIND ZUM TESTEN DER METHODE isHarshadNumber(...).
        System.out.println("4 --> " + isHarshadNumber(4));
        assert (isHarshadNumber(4));
        System.out.println("777 --> " + isHarshadNumber(777));
        assert (isHarshadNumber(777));
        System.out.println("8316 --> " + isHarshadNumber(8316));
        assert (isHarshadNumber(8316));
        assert (isHarshadNumber(1));
        assert (isHarshadNumber(172986));
        System.out.println("13 --> " + isHarshadNumber(13));
        assert (!isHarshadNumber(362));
      
        //**********************************************************************
        
        //TODO: Testen Sie hier alle Methoden mit verschiedenen Inputs!

        System.out.println(countHarshadNumbers(51, 79));
    }
}
 
Kannst Du es denn mit eigenen Worten einmal möglichst genau beschreiben? Was muss gemacht werden?
 
Nein kann ich leider nicht, da ich mir nicht sicher bin, wie in der zweiten Methode eine Zahl als Harshad Zahl identifiziert werden kann. Ich glaube, dass ich dazu die erste Methode aufrufen muss... bin mir da allerdings unsicher.
 
Zuletzt bearbeitet:
Kannst Du denn die Zahlen von start bis end erst einmal auflisten - so als erste Übung um sich da mal heran zu tasten?
 
Java:
 public static void main(String[] args)
     for (int i = 51; i <= 79; i++)
         System.out.println(i)

mittels For Schleife zB
in dem Fall könnte ich statt 51 "start" und statt 79 "end" schreiben
 
Java:
public static int isHarshNumber (int i) {
    int quersumme = 0;
    int lastDigits = i;
    while (lastDigits > 0) {
        quersumme += lastDigits % 10;
        lastDigits /= 10;
    }
    return i % quersumme == 0;
}

bzw. in Worten ich muss die Zahl i zuerst %10 (gibt die letzte Ziffer der Zahl zurück) und anschließend /10 rechnen
 
Ok, Du hast die Methode noch einmal kurz beschrieben. Also hast Du eine Methode, die Du für die Zahl aufrufen kannst. (Hast Du ja auch schon in main so benutzt.

Dann wäre des nächste Schritt: Kannst Du Abhängig von einer Bedingung etwas machen? Also etwas soll nur gemacht werden, wenn eine Bedingung wahr ist.
 
Ja genau. Wobei nur ein if ausreicht. Damit haben wir dann alle Bausteine für den Code.
Denn jetzt kannst Du doch für alle Zahlen eine Prüfung machen und wenn die Prüfung erfolgreich ist, dies zählen. (Mal etwas allgemein ausgeführt. So hast Du noch die exakten Details zu benennen. Aber die Bausteine hätten wir jetzt alle.)
 
erstere Versuch scheint geklappt zu haben 🙂

Java:
private static int countHarshadNumbers(int start, int end) {
        int count = 0;
        for (int i = start; i <= end; i++) {
            if (isHarshadNumber(i) == true )
                count++;
        }
        return count;
    }
 

Zurück
Oben