我目前正在尝试为一个工作中的程序编写一个错误记录实用程序,该程序可以自动执行其他产品在多个步骤中执行的任务(它是 Selenium,但我认为这不相关)。
当某个特定任务的步骤失败时,我想确定该步骤,以及它在整个特定任务中失败了多少次(许多步骤是通用的和重复的,例如“向 X 发送消息”、“更新 X 日志”等等)
我面临的问题是,当它计算错误时,它没有正确递增。如果一个步骤失败一次,它将把它记为 1。如果一个步骤失败两次,计数将保持为 1。如果失败 3 次,则计数将增加到 2,如果 4 次,它将增加到3、等等。
这意味着如果一个步骤失败不止一次,我的计数总是减一。
我用于此特定工作的代码是:
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);
}
}
如有任何指点,我们将不胜感激。 问候, 注册。
最佳答案
你应该试着把它改成
if (!map.containsKey(word)) {
map.put(word, 1);
} else {
map.put(word, map.get(word) + 1);
}
变量 count
的值在执行过程中可能会过时。这种问题最适合调试。尝试逐步跟踪 count
的值,这将帮助您确定这个问题。
关于Java Treemap 没有正确递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30591860/