Rekursive Programmierung-Zählen von Ziffern

java_max

Mitglied
Hallo ich muss für mein Praktikum die Aufgabe lösen eine rekursive Programmierung schreiben die das vorkommen einer ziffer in einer Zahl zählt. meine Klassenmethode soll dazu folgende Signatur haben:
Java:
public static int zaehleZifferInZahl(int ziffer, int zahl)
Das habe ich bisher geschrieben, kann aber den Fehlern nicht finden:
Java:
public class Ziffern {
   public static int zaehleZifferInZahl(int ziffer,int zahl) {
    return (zahl>0)? 1+zaehleZifferInZahl(zahl/10) : 0;
}
    
  public static void main(String[] args){
        int zaehleZifferInZahl(int 1, int 1213414);
  }
}
Ich hoffe ihr könnt mir Helfen und danke schon einmal in Vorraus.
 
Moin,

welche Fehler treten denn auf ??

Dann so auf die Schnelle - zumindest ist Dein Aufruf falsch:
Java:
int zaehleZifferInZahl(int 1, int 1213414);
Du darfst hier nur die gerwünschten Werte übergeben .... der Datentyp ist ja durch die Signatur der Methode festgelegt!
Also:
Java:
int zaehleZifferInZahl( 1, 1213414 );
Gruß Klaus
 
Java:
return (zahl>0)? 1+zaehleZifferInZahl(zahl/10) : 0;
in dieser Zeile: method zaehleZifferInZahl in class Ziffern cannot be applied to given types;
required: int,int
found: int
reason: actual and formal argument lists differ in lenght
Java:
int zaehleZifferInZahl(1,1213414);
in dieser Zeile: ";" expected
 
Moin,

Java:
int zaehleZifferInZahl(1,1213414);
in dieser Zeile: ";" expected
Ach so, klar: das führende 'int' (Datentyp des Rückgabewerts der Methode) darf natürlich auch nicht hin.
Die musst die Rückgabe auf eine (neue) Variable schreiben, damit du sie auch weiter verarbeiten kannst!!

Gruß Klaus
 
Übrigens zählt deine Methode "zaehleZifferInZahl" die Anzahl aller Ziffern der Zahl.
Eigentlich sollte sie die Anzahl einer bestimmten Ziffer zählen.
 
Nötige Korrekturen, damit zumindest die Syntax stimmt
Java:
public class Ziffern {
   public static int zaehleZifferInZahl(int ziffer,int zahl) {  // hat ZWEI Parameter
    return (zahl>0)? 1+zaehleZifferInZahl(zahl/10) : 0; // 1.Parameter=zahl/10 2.Parameter=?
}
    
  public static void main(String[] args){
        int zaehleZifferInZahl(int 1, int 1213414); // alle "int" entfernen (wurde schon gesagt)
  }
}

Deine Methode tut auch nicht, was sie soll. Ich würde dir folgendes Vorgehen empfehlen:
1.) Schreibe dir ein paar Tests (etwa System.out.println("Test 1: " + (zaehleZifferInZahl(1, 11) == 2));)
2.) Wie überprüfst du bei einer 1stelligen Zahl, welche Ziffer sie hat?
3.) Bau eine Methode, die prüft ob die Zahl einstellig ist
Wenn JA: Ergebniss aus 2.) zurückgeben
Wenn NEIN: Rekursiver Aufruf
4.) Überlege dir, wie du mit der Rückgabe des Wertes im NEIN-Fall umgehen möchtest
5.) Methode nochmal posten, wenn du möchtest 😉
 

Zurück
Oben