我花了两个多小时调试看起来极不可能的东西 . 我已经删除了辅助Android Activity的方法到这个:
public void onClick(View v) {
String str = "25";
long my_long = Long.getLong(str);
} // onClick (v)
是的,我遇到了好的'NullPointerException崩溃:
09-11 02:02:50.444:ERROR / AndroidRuntime(1588):未捕获的处理程序:由于未捕获的异常而导致主线程退出09-11 02:02:50.464:ERROR / AndroidRuntime(1588):java.lang.NullPointerException
看起来(从其他测试中)Long.getLong(str)返回NULL,这让我疯狂 . 我错过了什么?
提前致谢 . 我很好,愚蠢地错过了明显的,但我的理智是在线 .
5 回答
您错过了
Long.getLong(String str)
不应该将String解析为long的事实,而是返回由该字符串表示的 system property 的长值 . 正如其他人所建议的那样,你真正需要的是Long.parseLong(String str)
.您可以使用
Long.parseLong(String)
而不是getLong(String)
:它将解决问题 .我认为你使用错误的功能 Long.parseLong(str) 然后你就可以得到正确的答案 .
Long.parseLong(someString)获得批准 . 如果存在不可解析字符串的可能性,请不要忘记捕获NumberFormatException .
为了理解这一点,一些例子:
返回:
null
返回:
3000
使用 Long.parseLong() :
返回:
32340
文档将getLong()方法描述为:
这是 getLong() 方法的代码,只获取由字符串定义的属性值:
如果要将String解析为Long,最好的方法是使用Long.parseLong()方法 .