Rom*_*man 20 java string integer
我有以下代码:
game.log.fine("HERE" + bestMove.get("score"));
Integer bestScore = Integer.getInteger(bestMove.get("score"));
game.log.fine("THERE" + bestScore);
Run Code Online (Sandbox Code Playgroud)
作为输出我有:
FINE: HERE50
Dec 9, 2010 11:34:17 AM game.Agent getCloud
FINE: THEREnull
Dec 9, 2010 11:34:17 AM game.Agent getCloud
Run Code Online (Sandbox Code Playgroud)
可能我不得不补充一点,bestMove是HashMap<String,String>.
问题是bestMove.get("score")给出一个字符串值(等于"50").但如果尝试转换为整数,我得到null.
有人知道这里有什么问题吗?
Val*_*her 37
因为Integer.getInteger不是你要找的东西.来自Javadoc:
确定具有指定名称的系统属性的整数值.第一个参数被视为系统属性的名称.可以通过System.getProperty(java.lang.String)方法访问系统属性.然后将此属性的字符串值解释为整数值,并返回表示此值的Integer对象.可以使用getProperty的定义找到可能的数字格式的详细信息.
如果没有具有指定名称的属性,如果指定的名称为空或null,或者该属性没有正确的数字格式,则返回null.
你想用 Integer.parseInt
aio*_*obe 10
我怀疑你正在寻找这个Integer.parseInt方法:
将字符串参数解析为带符号的十进制整数.
用法示例:
int bestScore = 0;
try {
bestScore = Integer.parseInt(bestMove.get("score"));
} catch (NumberFormatException nfe) {
// handle exception gracefully
}
Run Code Online (Sandbox Code Playgroud)
在Integer.getInteger做了完全不同的:
确定具有指定名称的系统属性的整数值.
Buh*_*ndi 10
我会用这个Integer.valueOf(String n)方法.
Integer bestScore = Integer.valueOf(bestMove.get("score"));
Run Code Online (Sandbox Code Playgroud)
从这个博客,他们给出的原因,
Integer.getInteger(String)通过假设String是系统属性数字表示的名称,将String转换为数字.换一种说法.Integer.getInteger("12345")很可能会屈服null.
| 归档时间: |
|
| 查看次数: |
19863 次 |
| 最近记录: |