Long.getLong() 失败,返回 null 到有效字符串

发布于 2024-12-04 00:52:32 字数 526 浏览 1 评论 0原文

在过去的两个小时里,我一直在调试看似极不可能的事情。我已经将辅助 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): Uncaught handler: thread main 而崩溃由于未捕获的异常而退出 09-11 02:02:50.464: ERROR/AndroidRuntime(1588): java.lang.NullPointerException

看起来(从其他测试来看)Long.getLong(str) 返回 NULL,这让我发疯。我缺少什么?

提前致谢。我可以接受愚蠢地错过显而易见的事情,但我的理智岌岌可危。

I've spent the past two hours debugging what seems extremely unlikely. I've stripped the method of a secondary Android Activity to exactly this:

public void onClick(View v) {
        String str = "25";
        long my_long = Long.getLong(str);
} // onClick (v)

And yeah, I get a crash with the good ol' NullPointerException:

09-11 02:02:50.444: ERROR/AndroidRuntime(1588): Uncaught handler: thread main exiting due to uncaught exception
09-11 02:02:50.464: ERROR/AndroidRuntime(1588): java.lang.NullPointerException

It looks like (from other tests) that Long.getLong(str) returns NULL, which is driving me bonkers. WHAT AM I MISSING?

Thanks in advance. I'm okay with stupidly missing the obvious, but my sanity is on the line.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

百思不得你姐 2024-12-11 00:52:33

您错过了这样一个事实: Long.getLong(String str) 不应该将 String 解析为 long,而是返回表示的 系统属性 的 long 值通过那根弦。正如其他人所建议的,您实际需要的是 Long.parseLong(String str) 。

You are missing the fact that Long.getLong(String str) is not supposed to parse a String to a long, but rather to return a long value of a system property represented by that string. As others have suggested, what you actually need is Long.parseLong(String str).

北斗星光 2024-12-11 00:52:33

您可以使用Long.parseLong(String),而不是getLong(String):它会解决问题。

You can use Long.parseLong(String), instead of getLong(String): it will solve the problem.

度的依靠╰つ 2024-12-11 00:52:33

我认为您使用了错误的函数,使用 Long.parseLong(str) 然后您可以获得正确的答案。

I think you are using wrong function use Long.parseLong(str) then you can get the right answer.

无声无音无过去 2024-12-11 00:52:33

Long.parseLong(someString) 已批准。如果可能存在无法解析的字符串,请不要忘记捕获 NumberFormatException。

Long.parseLong(someString) approved. Don't forget to catch NumberFormatException if there's a probability of unparsable string.

合约呢 2024-12-11 00:52:33

为了理解这一点,举一些例子:

Long val= Long.getLong("32340");

返回:null

Long val = Long.getLong("32340", 3000);

返回:3000

使用 Long.parseLong()

Long val  = Long.parseLong("32340");

返回:32340

文档描述 getLong () 方法如下:

返回由字符串标识的系统属性的长整型值。

这是 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;
        }
    }

如果要将 String 解析为 Long,最好的方法是使用 Long.parseLong()< /strong> 方法。

To understand this, some examples:

Long val= Long.getLong("32340");

returns: null

Long val = Long.getLong("32340", 3000);

returns: 3000

Using Long.parseLong() :

Long val  = Long.parseLong("32340");

returns: 32340

The documentation describe getLong() method as :

Returns the Long value of the system property identified by string.

this is the code of the getLong() method and only get a property value defined by a string:

  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;
        }
    }

If you want to parse a String to Long, the best way is using Long.parseLong() method.

醉生梦死 2024-12-11 00:52:33

您可以使用 Long.parseLong(String),而不是 getLong(String):它将解决问题。

You can use Long.parseLong(String), instead of getLong(String): it will solve the problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文