Question

J'ai une carte de hachage que j'utilise dans Processing et j'aimerais incrémenter la valeur dans la carte. Je l’ai fait sur Google et il m’a montré que le code suivant était correct:

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

Je continue à recevoir:

L'opérateur + n'est pas défini pour le type d'argument Object, int

Je ne suis pas un codeur Java, mais la référence indique qu'elle renvoie un objet. Dois-je utiliser une méthode .getValue () dessus pour extraire l'int?

Peut-être que je fais autre chose de mal? Hmmm.

Cordialement.

Était-ce utile?

La solution

Je ne connais rien à 'Processing', mais en regardant le code ci-dessus, vous devez transtyper la valeur en un entier avant de l'ajouter.

Vous ne savez pas quelle version de Java est utilisée ici, mais vous pouvez faire quelque chose comme ça.

if (colors.containsKey(ckey)) 
{ 

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

Autres conseils

Par défaut, HashMap vous permettra de stocker tout type d'objet sans vérifier le type d'objet utilisé pour les clés ou les valeurs.

Vous devriez essayer de déclarer votre HashMap à l'aide de la déclaration de type de votre carte:

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

(notez que je suppose que les clés de la carte sont java.awt.Color et que les valeurs sont toujours int)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top