Zählen der vorkommen der Elemente im array? (Java)
Ich habe gearbeitet, versucht, herauszufinden, diesen Algorithmus für über 6 Stunden jetzt und kann nicht scheinen, um zu einer Lösung zu kommen. Ich versuche zu zählen der vorkommen von Elementen in einem array und können zwei weitere separate arrays. Eine für die einzigartige Instanzen, und eine für wie oft diese Instanzen Auftritt. Ich fand einige andere denkt hier über die array-Listen und hashMaps, aber ich bin nur in der Lage, arrays verwenden.
Zum Beispiel habe ich dieses array (bereits sortiert):
{cats, cats, cats, dog, dog, fish}
Ich versuche, ein array für die Instanzen, also:
{cats, dog, fish}
Und schließlich, wie oft diese Fälle vorkommen:
{3, 2, 1}
Hier ist der code, den ich bisher:
public void findArrs( String[] words )
{
int counter = 1;
for(int i = 0; i < words.length - 1; i++){
if(!(words[i].equals(words[i+1]))){
counter++;
}
}
String[] unique = new String[counter];
int[] times = new int[counter];
for(int i = 0; i < words.length; i++){
}
}
Dies ist der gesamte code, ich habe nach all meinen versuchen.
Ich machte einen für den look, der läuft durch den sortierten array und Wann schaltet es auf etwas anderes I Inkrementieren einen Zähler und am Ende, das ist die Länge der einzigartigen und Instanzen-Arrays. Aber ich komme nicht weiter, wie bewegen sich die Elemente der sortierten array in diese beiden.
Ich habe nur den editierten post mit meinem code.
InformationsquelleAutor helloMundo | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie es getan werden könnte, nur mithilfe von arrays. Der schwierige Teil ist, Sie müssen wissen, die Anzahl der Elemente, bevor das array angelegt wird. Also musste ich meine eigene Funktion zu erstellen, die einem größeren array. Eigentlich zwei, eine für die Zählung und eine für die eindeutige Werte.
Wenn kann man Vektoren verwenden, werden Sie besser dran. Hier ist es ohne vetors:
Wie bereits erwähnt in den Kommentaren, wenn wir wissen, dass das array in Ordnung ist, dann brauchen wir nicht suchen über den gesamten vorherigen array und kann nur überprüfen uniqueValues-direkt.
List<String>()
und nur hinzufügen, wie Sie wollen, nach der Sie anrufen könnenstringlist.toArray()
Ja, aber in einem Kommentar der OP sagte, "ich kann nur arrays und Schleifen", so dass ich nur verwendet, arrays und Schleifen in meiner Antwort, sondern schlug vor, Sie schauen auf Vektoren statt Listen<String> würde wohl besser sein, aber (es ist schon eine Weile her, dass ich programmiert in java - generics hat es damals noch nicht).
Der code nicht (ab)nutzen die Eigenschaft, dass das Eingabe-array ist sortiert. 😉
Guter Fang! Hinzugefügt eine version mit der Annahme array ist sortiert. Könnte auch das zählen leichter von eindeutigen Werten, aber das überlasse ich als übung dem Leser... es ist schon spät 🙂
InformationsquelleAutor ansible
Machen einzigartig, mal als Instanz-variable, so dass Sie können Sie abrufen aus einer anderen Klasse mit getter-Methoden.
Hinweis: Geänderte code kann gefunden werden durch Kommentare (für die Zeile "Hinzugefügte Zeile". für den block zwischen "Hinzugefügt-code beginnt hier" zu "Hinzugefügt-code endet hier"). Ich habe versucht zu erklären, die Umsetzung in code. Bitte lassen Sie mich wissen durch Kommentare, wenn ich zur Arbeit muss mehr auf meine Dokumentation Fähigkeiten
InformationsquelleAutor hemanth
Unter der Annahme, dass die
words
array muss mindestens ein element:Anderen Antworten erwähnt habe, könnte dieses problem vereinfacht werden, indem eine Liste wie ArrayList zum speichern der Ergebnisse.
Nur noch einen code-block am Anfang. Es tut beinhalten, Durchlaufen die Worte-array eine zusätzliche Zeit, obwohl.
Sorry, ich war auf der Suche über Ihren code wieder. Können Sie erklären, warum es die currentWord = Wörter[i]; currentWordCount = 1; am Ende der for-Schleife? Auch wenn Sie ein, wenn innerhalb der für. Tut hop aus der if-Anweisung, nachdem Ihre Bedingung erfüllt ist, dann geht die for-Schleife dann neu starten?
Der code "currentWord = Wörter[i]; currentWordCount = 1;" begegnet ist, wenn wir den übergang zu einem neuen Wort im original-array -- wenn das aktuelle Wort (words[i]) umgestellt wurde aus "cats" , "Hund", zum Beispiel. Es rettet aus "cats" und "3" in die Ergebnis-arrays, und dann wird das aktuelle Wort "Hund" und "1" da dies die erste "Hund" , wurde gezählt.
Ihre zweite Frage bezieht sich auf einen Abschnitt, der geändert wurde (Sie können die alte version hier: stackoverflow.com/posts/21229050/revisions). Die if innerhalb der for-Schleife ausgeführt werden soll einmal -- die for-Schleife laufen würde, bis es gefunden ein element des Arrays, die noch nicht aufgefüllt wurde. Einmal finde ich einen ungültigen array-index, ich Werte zuweisen und dann verwenden Sie die "Pause" - Schlüsselwort, das im Grunde sagt, "nehmen Sie die nächste for-Schleife und stop Durchlaufen".
InformationsquelleAutor martiansnoop
Können Sie erreichen es mit TreeMap:
InformationsquelleAutor mohaksharma
Es wäre sehr einfach, wenn man ArrayList verwenden. Aber da Sie wollen, vor allem, Arrays, hier ist mein code.
Wie Sie sehen können, das eigentliche problem ist die Länge der Arrays, die Sie angeben müssen, bevor Sie Sie verwenden. Mit ArrayLists, die Sie nicht haben, um.
Auch, da die Elemente sortiert werden, lieber mit einer while-Schleife statt einer for-Schleife. Es sieht einfach gut aus.
InformationsquelleAutor user3173787
String s[] = {"Arranged", "Administered", "Advised", "Administered", "Adapted"};
//Speichern einer vorgegebenen Anzahl von WörternString k="I have administered and advised him to stay away.";
//Eine Zeichenfolge, die Sie wollen, zu entsprechen, wenn es enthält diese WorteString ka[]=k.split("\\s");
//Zerlegt den string auf evry Raum auftreten, so dass es Auszüge jedes Wortfor(i=0;i<ka.length;i++)
{for(j=0;j<s.length;j++){
if(ka[i].equalsIgnoreCase(s[j]))
{System.out.println("The occurred words are:" +s[j]);
continue;
//Weiter verwendet wird, zu finden, wenn mehr als ein Wort aufgetreten ist}
}
}
InformationsquelleAutor Aradhya Jain
Hier ist ganz einfach JavaScript:
Tut mir Leid 🙂 Aber vielleicht kann dies Ihnen eine Vorstellung von dem, was Sie tun können
Ja. Ich bin sehr neu in java, ein neues Code eigentlich so die meisten anderen codes und Sachen sind für mich schwer zu brechen.
Wenn es möglich ist, für Sie zu nutzen ArrayLists in Ihrer java -, ist auch dies in einfacher Weise
InformationsquelleAutor Pierre