Domanda

Ho una HashMap che sto usando in Processing e vorrei incrementare il valore nella mappa. L'ho fatto su Google e mi ha mostrato che il seguente codice è corretto:

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

Continuo a ricevere:

L'operatore + non è definito per i tipi di argomento Object, int

Non sono un programmatore Java ma il riferimento dice che restituisce un oggetto ... devo usare un metodo .getValue () su di esso per estrarre l'int?

Forse sto facendo qualcos'altro che non va? Hmmm.

Saluti.

È stato utile?

Soluzione

Non so nulla di "Elaborazione" ma guardando il codice sopra, è necessario digitare il valore in un numero intero prima di aggiungere.

Non sei sicuro di quale versione di Java venga utilizzata qui, ma puoi fare qualcosa del genere.

if (colors.containsKey(ckey)) 
{ 

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

Altri suggerimenti

Per impostazione predefinita, HashMap ti consente di memorizzare qualsiasi tipo di oggetto senza controllare il tipo di oggetto utilizzato per chiavi o valori.

Dovresti provare a dichiarare la tua HashMap usando la dichiarazione di sicurezza della tua mappa:

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

(nota che suppongo che le chiavi per la mappa siano java.awt.Color e i valori siano sempre int)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top