Pourquoi Entier.getInteger ne fonctionne pas?
J'ai le code suivant:
game.log.fine("HERE" + bestMove.get("score"));
Integer bestScore = Integer.getInteger(bestMove.get("score"));
game.log.fine("THERE" + bestScore);
En sortie j'ai:
FINE: HERE50
Dec 9, 2010 11:34:17 AM game.Agent getCloud
FINE: THEREnull
Dec 9, 2010 11:34:17 AM game.Agent getCloud
Probablement j'ai dû ajouter que bestMove est HashMap<String,String>
.
Le problème est que bestMove.get("score")
donne une valeur de chaîne (égal à "50"). Mais si vous essayez de transformer en entier, je reçois null
.
Quelqu'un sait quel est le problème ici?
- Entier.parseInteger() à la place? 🙂
- Vous devez sélectionner une réponse correcte à partir de ci-dessous.
- si cela a résolu votre question, pourriez-vous marquer une réponse comme correcte ?
- Désolé pour ce, deux ans plus tard, mais pourriez-vous marquer comme résolu ?
Vous devez vous connecter pour publier un commentaire.
Parce que
Integer.getInteger
n'est pas ce que vous êtes recherche pour. À partir de la Javadoc :Vous souhaitez utiliser
Integer.parseInt
Je voudrais utiliser le
Integer.valueOf(String n)
méthode.De ce blog, la raison pour laquelle ils ont donné,
valueOf
intérieurement il estInteger.valueOf(parseInt(s, 10))' ... where
parserInt()` n'est rien, maisInteger.parseInt(String)
avec radix 10Integer.parseInt(s, 10)
. J'ai toujours le suggèrentvalueOf()
depuis la JVM utilise pour l'autoboxing, de toute façon. Ce que je dis, c'est que, si il y à utiliser, l'utiliser.valueOf(int)
. Aussi la raison de l'utiliser dans l'autoboxing est", comme on retourne un Entier instance représentant le spécifiée valeur int. Si un nouveau Entier instance n'est pas nécessaire, cette méthode doit généralement être utilisés de préférence pour le constructeur de type Entier(int), que cette méthode est susceptible d'avoir nettement mieux l'espace et le temps de la performance par la mise en cache souvent demandé valeurs.` - Prises de javadocvalueOf()
. Essentiellement, ils sont tous les deux le même (valueOf()
,parseInt()
), c'est donc la préférence de l'utilisateur.Je soupçonne que vous êtes à la recherche pour le
Integer.parseInt
méthode:Exemple d'utilisation:
La
Integer.getInteger
fait quelque chose de complètement différent:De base
Integer.getInteger
:La
java.lang.Entier.getInteger(String nm, int val)
méthode détermine la valeur de l'entier du système de la propriété avec le nom spécifié.L'argument val est le valeur par défaut.Un
Objet Integer qui représente la valeur de la deuxième argument est retourné s'il n'y a aucune propriété du nom spécifié, si la propriété n'a pas le bon format numérique, ou si le nom spécifié est vide ou null.
Ou
La
java.lang.Entier.getInteger(String nm)
Détermine la valeur de l'entier de la système de la propriété avec le nom spécifié. L'argument est traité comme le nom de un système de propriété. La chaîne de valeur de cette propriété est interprété comme une valeur de type entier et un objet Integer représentant cette valeur est renvoyée. Si il y a aucune propriété avec le nom spécifié, si le nom spécifié est vide ou null, ou si la propriété ne pas la correct format numérique, puis null est retourné.Remarque: propriétés du Système sont accessibles par le biais de la
System.getProperty(java.lang.String)
méthode.La Solution à Utiliser:(
Integer.parseInt
/Integer.valueOf
)La
java.lang.Entier.parseInt(String s)
analyse la chaîne de caractères en argument un signé entier décimal. Les caractères dans la chaînedoit tous chiffres décimaux, sauf que le premier caractère peut être un
ASCII
signe moins'-' ('\u002D')
à indiquer une valeur négative. L'entier résultant de la valeur est retournée, exactement comme si l'argument et le radix 10 ont été donnés comme arguments à laparseInt(java.lang.String, int)
méthode.Ou
La
java.lang.Entier.valueOf(String s)
retourne un objet Integer holding la valeur de la Chaîne spécifiée. L'argument est interprété comme représentant un signé entier décimal, exactement comme si l'argument a été donné à laparseInt(java.lang.String)
méthode. Le résultat est un objet Integer qui représente la valeur de l'entier spécifié par la chaîne.En d'autres termes, cette méthode retourne un objet Integer égale à la valeur de:
Vous devez utiliser
dans votre code depuis
permettra de déterminer la valeur de l'entier du système de la propriété portant le nom spécifié.
Bon code serait:
Que
10
que le deuxième argument est la base. Utiliser toujours de sorte que votre numéro ne sera pas analysée ambigously.parseInt
peut être omis.parseInt()
il y aura de traiter034
et34
différemment; d'abord comme octal, deuxième décimale, si vous n'avez pas spécifier explicitement le radix.Utiliser cette méthode:
Utilisation
Integer.parseInt(String)
.Utilisation Entier.parseInt à la place.