Java :: Aufgabe #95 :: Lösung #3
3 Lösungen

#95
Das Häufigste Element in einem Array
Anfänger - Java
von klhlubek19
- 16.07.2015 um 13:46 Uhr
Schreiben Sie ein Programm, das aus einem Array das häufigste Element findet. Sollte es mehrere gleicher Anzahl finden, so darf irgend ein Element dieser Häufigsten ausgegeben werden.
#3

von guandi (230 Punkte)
- 14.11.2018 um 16:29 Uhr
Ich habe das ganze etwas erweitert... :)
Java-Code

package filterNamesByFrequency; import java.util.Arrays; public class FrequencyFilterApp { public static void main(String[] args) { String[] names = {"adam", "adam", "eva", "paul", "adam", "eva", "hans"}; int[] nameCounter = new int[names.length]; countEqualNamesByName(names, nameCounter); namesAndCounterOutput(names, nameCounter); } // Ausgabe der Namen und der Menge wie oft sie im Array enthalten sind private static void namesAndCounterOutput(String[] names, int[] nameCounter) { int i = 0; for(int count: nameCounter) { if(count == 0) { // Zur Vermeidung von doppelten Ausgaben da nur das erste Auftauchen eines Namens die Menge enthält i++; continue; }else { System.out.println("Name: " + names[i]); System.out.println(count); i++; } } } // Sortieren des Arrays und Zählen der Anzahl der selben Namen private static void countEqualNamesByName(String[] names, int[] nameCounter) { int namePointer = 0; // Der namePointer zeigt bei speichern der Menge zu dem Passenden Namen String nameHolder = ""; // Platzhalter um doppelte Namen zu überspringen Arrays.sort(names); // Array nach dem Alphabet sortieren for(String name : names) { if(nameHolder.equalsIgnoreCase(name)) { // Prüfen ob der Platzhalter den gleichen Namen enthält wie der zu Zählende Name // wenn ja wird der Pointer hoch gezählt und der nächste Name kommt dran namePointer++; continue; }else { // Sollten die Namen nicht übereinstimmen rufen wir die Schleife zum Zählen der doppelten Namen auf for(String nameX:names) { if(name.equalsIgnoreCase(nameX)) { nameCounter[namePointer] ++; } } nameHolder = name; // Übergabe des aktuellen Namens an den Platzhalter zum überspringen doppelter Zählungen namePointer++; } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1