1

Processing で使用している HashMap があり、マップの値をインクリメントしたいと考えています。Googleで検索したところ、次のコードが正しいことがわかりました。

if (colors.containsKey(ckey))
{
    colors.put(ckey, colors.get(ckey) + 1);
} else {
    colors.put(ckey, 1);
}

私は得続けます:

演算子 + は、引数の型 Object、int に対して定義されていません

私は Java コーダーではありませんが、参考文献では Object を返すと書かれています。.getValue() メソッドを使用して int を抽出する必要がありますか?

多分私は何か他の間違ったことをしていますか?うーん。

よろしく。

4

2 に答える 2

2

デフォルトでは、HashMap を使用すると、キーまたは値に使用されているオブジェクトのタイプをチェックせずに、あらゆる種類のオブジェクトを格納できます。

マップのタイプ セーフな宣言を使用して、HashMap を宣言するようにしてください。

HashMap<Color, Integer> colors = new HashMap<Color, Integer>();

(マップのキーは java.awt.Color で、値は常に int であると想定していることに注意してください)

于 2009-10-28T04:17:20.850 に答える
0

'Processing'については何も知りませんが、上記のコードを見ると、値を整数に型キャストしてから追加する必要があります。

ここで使用されているJavaのバージョンはわかりませんが、次のようなことができます。

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}
于 2009-10-28T04:10:35.017 に答える