【问题标题】:java.lang.NumberFormatException: Invalid long: ""java.lang.NumberFormatException:无效的长:“”
【发布时间】:2013-04-08 22:48:58
【问题描述】:

我正在以"\/Date(588657600000-0400)\/" 的格式获取 DOB 字符串,我正在解析如下。

String target = custom.getDOB();
if (target == null || target == "") {
    holder.item3.setText("-");
} else {
    long millis = Long.parseLong(target.substring(
                 target.indexOf("(") + 1, target.indexOf("-")));
    java.text.DateFormat df = new SimpleDateFormat("MM-dd-yyyy", Locale.ENGLISH);
    holder.item3.setText(df.format(new Date(millis)));
}

我收到此错误 "04-08 22:44:09.864: E/AndroidRuntime(3837): java.lang.NumberFormatException: Invalid long: "" 。我之前正在检查我的 String 对象是否包含 null or "" 并设置它到“-”,但我仍然得到这个异常。

更新:

04-08 22:59:17.423: E/AndroidRuntime(4175): java.lang.NumberFormatException:无效的长:“”04-08 22:59:17.423: E/AndroidRuntime(4175): 在 java.lang.Long.invalidLong(Long.java:125) 04-08 22:59:17.423: E/AndroidRuntime(4175): 在 java.lang.Long.parseLong(Long.java:346) 04-08 22:59:17.423: E/AndroidRuntime(4175): at java.lang.Long.parseLong(Long.java:319)

我将我的 null 和空字符串文字检查更改为此,但我仍然收到此错误。

if(target == null || target.equals(""))

【问题讨论】:

    标签: java android


    【解决方案1】:

    使用String#equals比较字符串值; == 运算符比较对象引用是否相等。

    if (target == null || target.equals("")) {
    

    您在测试null 时正确使用==,因为您确保您的target 引用不是null

    【讨论】:

    • 此时我遇到了错误... long millis = Long.parseLong(target.substring(target.indexOf("(") + 1, target.indexOf("-"))) ; //
    • 请考虑一下。 target.indexOf("-") 返回什么?
    • @Simon:它应该返回我字符串中“-”的位置/索引。
    • @theJava 就像我说的,请考虑一下(并学习使用调试器)。例如,indexOf("-") 返回 25。 indexOf("(") 返回 10(您将其加一)。然后您尝试解析从字符串的第 12 个字符开始的 25 个字符的字符串。
    • @Simon:当然,先生......我瘦得慢,是的,我会记住这一点。
    【解决方案2】:

    作为检查字符串是否为空或“”的快捷方式,您也可以使用

    StringUtils.isEmpty(target)

    【讨论】:

      【解决方案3】:
        Use Try and catch 
      
            String  values=Util.getStringFromSP(getActivity(),"time");
              try {
              PERIOD_MS = Long.parseLong(values);
          } catch (Exception e) {
      
              Log.d("time", "" + values);
              if (PERIOD_MS == 0) {
                  PERIOD_MS = 1000;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-11
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2016-10-05
        • 2015-12-14
        • 2016-04-29
        • 1970-01-01
        相关资源
        最近更新 更多