好的,所以我有这么简单的代码,但我无法弄清楚它为什么不起作用......
int redscre = teamScore.get(TeamType.RED);
int redscore = redscre--;
teamScore.put(TeamType.RED, redscore);
答案 0 :(得分:0)
这是贬低你的后减法运算符:
int redscore = redscre--;
这是发生的事件序列:
redscre
的值已分配给redscore
redscre
递减,redscore
未更改然后将未更改的redscore
值放回到hashmap中。
更改为预减量运算符以使其有效:
int redscre = teamScore.get(TeamType.RED);
teamScore.put(TeamType.RED, --redscre);
或者如果你想更明确地做事:
int redscre = teamScore.get(TeamType.RED);
int redscore = redscre - 1;
teamScore.put(TeamType.RED, redscore);
这个wikipedia article提供了关于前后增量/减量运算符之间差异的一个很好的解释。
答案 1 :(得分:0)
问题是你正在使用post decrement运算符。
Redscrore设置为redscr的值,然后redsrc递减
试试这个:
int redscre = teamScore.get(TeamType.RED);
int redscore = redscre - 1; // This statement returns the proper value.
teamScore.put(TeamType.RED, redscore);
另一个解决方案是使用预递减运算符(redscroe = --redscr),但看到redscr只是一个临时的,实际上没有充分的理由这样做。