Java Treemap Inkrementieren nicht richtig

stimmen
2

Ich versuche zur Zeit eine Fehlerprotokollierung Dienstprogramm für ein Programm in Arbeit zu schreiben, die Aufgaben durchgeführt von anderen Produkten in mehreren Schritten automatisiert (es ist Selen, aber ich glaube nicht, das ist relevant).

Wenn ein Schritt für eine bestimmte Aufgabe fehlschlägt, möchte ich den Schritt identifizieren, und wie oft sie nicht überall eine bestimmte Aufgabe (viele Schritte sind generisch und so wiederholt als „Nachricht senden TO X“, „Update X Log“ etc.)

Das Problem, das ich mit Blick auf bin, ist, dass, wenn es einen Fehler zählt, es ist nicht richtig erhöht wird. Wenn ein Schritt einmal fehlschlägt, wird es als eine Anzahl von 1. abholen Wenn ein Schritt zweimal fehlschlägt, wird der Zähler auf 1 bleiben, wenn es 3 mal ausfällt wird die Zählwert dann auf zwei erhöht, wenn 4 mal inkrementiert es 3, und so weiter.

Dies bedeutet , dass , wenn ein Schritt mehr nicht als einmal meine Zählung ist immer aus um eins.
Der Code , den ich für diese besondere Aufgabe besteht darin:

int count = map.containsKey(word) ? map.get(word) : 0;
if(word.startsWith(api) && line.contains(date.toString())){
    if (!map.containsKey(word)) {
        map.put(word, 1);
    } else {
        map.put(word, count + 1);
    }
}

Alle Hinweise auf alle würden sehr geschätzt. Viele Grüße, Reg.

Veröffentlicht am 02/06/2015 um 08:11
vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Sie sollten versuchen, es zu ändern

if (!map.containsKey(word)) {
        map.put(word, 1);
      } else {
        map.put(word, map.get(word) + 1);
      }

Der variable countWert kann während der Ausführung überholt sein. Diese Art von Fragen sind am besten geeignet für das Debuggen. Versuchen Sie, den Wert zu verfolgen countSchritt für Schritt, dass Sie dieses Problem festzunageln helfen.

Beantwortet am 02/06/2015 um 08:16
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more