質問

Processingで使用しているHashMapがあり、マップの値を増やしたいのですが。私はそれをGoogleで調べましたが、次のコードが正しいことがわかりました:

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

引き続き取得:

演算子+は、引数型オブジェクト、intに対して未定義です

私はJavaコーダーではありませんが、リファレンスではObjectを返すと言われています... intを抽出するために.getValue()メソッドを使用する必要がありますか?

たぶん私は何か間違ったことをしているのでしょうか?うーん。

よろしく。

役に立ちましたか?

解決

「処理」については何も知りませんが、上記のコードを見ると、追加する前に値を整数に型キャストする必要があります。

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

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}

他のヒント

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

マップのタイプセーフ宣言を使用してHashMapを宣言する必要があります。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top