Wie eine Ziffer/Dezimalzahl im Array speichern?
Schreiben Sie nun eine Methode, die zu der übergebenen Zahl n die Ziffer zurück-gibt, die am häufigsten in der Dezimaldarstellung der Zahl n vorkommt. Sollten mehrere Ziffern gleichhäufig vorkommen, so soll die kleinste der Ziffern zurückgegeben werden. Beispiel: Für die Zahl n=2031771 kommen die Ziffer 1 und 7 jeweils zweimal vor. Es muss also in diesem Fall die 1 zurückgegeben werden.Sie dürfen die Methode public static int berechneHäufigstenWert(int[] feld) aus Aufgabenteil a) benutzen.
public static int berechneHaeufigsteZiffer(int n)
{
assert(n>0);
}
3 Antworten
Endziffern bekommst Du mit "%", und die letzte Ziffer streichst Du dadurch, dass Du durch 10 teilst und den ganzzahligen Teil nimmst. Der Rest ist zählen.
Ja, aber guggemo, das ist doch die Lösung!
Du machst eine while-Schleife. Solange die Zahl x>0 ist, machst Du das folgende.
berechne x%10
zähle feld[x] um eins hoch
teile x durch 10
Weiter.
Der einzige Sonderfall ist die Zahl 0, die hat halt die Ziffer 0 (und nur eine davon).
public static int berechneHäufigstenZiffer(int n) {
int s = 0;
int[] feld = new int[laengeDezimalDarstellung(n)];
for (int i = feld.length - 1; i >= 0; i--) {
feld[i] = n % 10;
n = n / 10;
}
s = berechneHäufigstenWert(feld);
return s;
}
Ich habe einfach eine Funktion geschrieben, die Länge liest der Dezimalzahl, Länge habe ich genutzt um die passende Array länge zu haben. anschließen habe ich in einer For-Schleife das gemacht was mein Gedanke war und evolla es funktioniert
wie du eine zahl integer in einzelne ziffern zerlegst geht mit modulo %1 %10 %100 ...
siehe
https://www.tutorials.de/threads/ziffern-einer-zahl-auslesen.316333/
und dann nimmst du ein 10er array und incrementierst an der jeweiligen stelle , am ende suchst du den höchsten wert raus .
Ist ein bisschen gecheatet, aber kannst du die Zahl nicht einfach in einen Text umwandeln und die Ziffern die zeichenweise auslesen?
ja habe auch drüber nachgedacht