2016-05-17 3 views
-1

Ich habe die Bubble-Sort verwendet, um die Anzahl der Duplikate im Array zu finden und zu zählen, aber wenn ich die Anzahl der Duplikate im Array ausdrucke gibt es mir. Beispielsweise.Ich versuche, eine Zeichenfolge aus einem Array zu entfernen, nachdem ich es verwende. Aber ich weiß nicht, wo ich falsch liege

Word: Car Printed:3 times 
Word: Car Printed:2 times 
Word: Car Printed:1 times 
+1

Also, wenn die zwei Saiten die gleichen sind, tauschen Sie sie? Und dann löschst du einen von ihnen? Darf ich fragen, was du tust? – fafl

+0

Ich lese einen Text, in dem ich zählen muss, wie oft jedes Wort verwendet wird. Diese Zählung sollte nicht Groß-und Kleinschreibung und dann drucken Sie alle Wörter in alphabetischer Reihenfolge in 'richtigen' Fall (das heißt: erster Buchstabe Groß- und Kleinbuchstaben im Rest des Wortes) zusammen mit der Anzahl der Male, die dieses Wort hat erschien im Text. Jedes Wort sollte nur einmal gedruckt werden. –

+0

@ F.Lachlan Wenn Sie immer noch nicht mit den Antworten und Kommentaren zufrieden sind, können Sie Ihre eigenen Kommentare hinzufügen und nach mehr fragen. Andernfalls validiere eine Antwort, um dieses Thema zu schließen. – MedAl

Antwort

2

Sie entfernen nichts: Sie setzen nur null Referenz im Array. Sie sollten stattdessen einen ArrayList verwenden. Dies erledigt die Arbeit mit seiner Methode remove().

Wenn Sie wirklich mit Arrays festgefahren sind, müssen Sie ein ganz neues Array erstellen, dessen Größe die Größe 1 Ihres vorherigen Arrays sein wird, und dann eine Kopie des vorherigen in das neue Array erstellen. Sie sollten wirklich überlegen, die erste Alternative zu verwenden.

0

Sie werden feststellen, dass es einfacher ist, eine zweite Datenstruktur zum Zählen zu verwenden. Versuchen Sie dies:

// Count each word 
Map<String, Integer> counts = new HashMap<String, Integer>(); 
for (String s: arrays) { // TODO rename "arrays" to "words" or something 
    s = s.toLowerCase(); 
    int count = counts.get(s); 
    if (count == null) { 
     counts.put(s, 1); 
    } 
    else { 
     counts.put(s, count + 1) 
    } 
} 

// Sort and print 
List<String> keys = counts.keySet(); 
Collections.sort(keys); 
for (String key: keys) { 
    System.out.println(key + ": " + counts[key]); 
} 
Verwandte Themen