为什么 Integer.getInteger 不起作用?

2022-09-02 00:11:14

我有以下代码:

game.log.fine("HERE" + bestMove.get("score"));
Integer bestScore = Integer.getInteger(bestMove.get("score"));
game.log.fine("THERE" + bestScore);

作为输出,我有:

FINE: HERE50
Dec 9, 2010 11:34:17 AM game.Agent getCloud
FINE: THEREnull
Dec 9, 2010 11:34:17 AM game.Agent getCloud

也许我不得不补充一点,bestMove是.HashMap<String,String>

问题是给出一个字符串值(等于“50”)。但是,如果尝试转换为整数,我会得到.bestMove.get("score")null

有谁知道这里的问题是什么?


答案 1

因为Integer.getInteger不是你要搜索的。来自 Javadoc :

确定具有指定名称的系统属性的整数值。第一个参数被视为系统属性的名称。系统属性可通过 System.getProperty(java.lang.String) 方法访问。然后,将此属性的字符串值解释为整数值,并返回表示此值的 Integer 对象。可以使用 getProperty 的定义找到可能的数字格式的详细信息。

如果没有具有指定名称的属性,如果指定的名称为空或 null,或者该属性没有正确的数字格式,则返回 null。

您想要使用 Integer.parseInt


答案 2

我怀疑你正在寻找Integer.parseInt方法:

将字符串参数分析为有符号十进制整数。

用法示例:

int bestScore = 0;
try {
    bestScore = Integer.parseInt(bestMove.get("score"));
} catch (NumberFormatException nfe) {
    // handle exception gracefully
}

Integer.getInteger做了一些完全不同的事情:

确定具有指定名称的系统属性的整数值。