我花了两个小时调试看起来极不可能的事情。我已经删除了辅助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,这让我疯狂。我错过了什么?
提前致谢。我很好,愚蠢地错过了明显的,但我的理智是在线。
答案 0 :(得分:98)
您错过了Long.getLong(String str)
不应将String解析为long的事实,而是返回由该字符串表示的系统属性的长值。正如其他人所建议的那样,您实际需要的是Long.parseLong(String str)
。
答案 1 :(得分:11)
您可以使用Long.parseLong(String)
代替getLong(String)
:它可以解决问题。
答案 2 :(得分:7)
我认为你使用错误的功能 Long.parseLong(str)然后你就可以得到正确的答案。
答案 3 :(得分:7)
Long.parseLong(someString)获得批准。如果存在可解析字符串的可能性,请不要忘记捕获NumberFormatException。
答案 4 :(得分:4)
要理解这一点,请举例说明:
Long val= Long.getLong("32340");
返回:null
Long val = Long.getLong("32340", 3000);
返回:3000
使用 Long.parseLong() :
Long val = Long.parseLong("32340");
返回:32340
文档将getLong()方法描述为:
返回由字符串标识的系统属性的Long值。
这是 getLong()方法的代码,只获取由字符串定义的属性值:
public static Long getLong(String string) {
if (string == null || string.length() == 0) {
return null;
}
String prop = System.getProperty(string);
if (prop == null) {
return null;
}
try {
return decode(prop);
} catch (NumberFormatException ex) {
return null;
}
}