android java中抛出数字格式异常

时间:2014-08-30 15:21:19

标签: java

代码抛出数字格式异常:

String id=etgetinfo.getText().toString();
long l= Long.parseLong(id);

Log cat:

  

08-30 11:13:00.995:E / AndroidRuntime(1554):致命异常:主要   08-30 11:13:00.995:E / AndroidRuntime(1554):流程:   com.tarragon.tmessenger,PID:1554 08-30 11:13:00.995:   E / AndroidRuntime(1554):java.lang.NumberFormatException:无效长:   “”08-30 11:13:00.995:E / AndroidRuntime(1554):at   java.lang.Long.invalidLong(Long.java:124)08-30 11:13:00.995:   E / AndroidRuntime(1554):at java.lang.Long.parseLong(Long.java:345)   08-30 11:13:00.995:E / AndroidRuntime(1554):at   java.lang.Long.parseLong(Long.java:318)08-30 11:13:00.995:   E / AndroidRuntime(1554):at   com.tarragon.tmessenger.SqliteExample.onClick(SqliteExample.java:78)   08-30 11:13:00.995:E / AndroidRuntime(1554):at   android.view.View.performClick(View.java:4438)08-30 11:13:00.995:   E / AndroidRuntime(1554):at   android.view.View $ PerformClick.run(View.java:18422)08-30   11:13:00.995:E / AndroidRuntime(1554):at   android.os.Handler.handleCallback(Handler.java:733)

3 个答案:

答案 0 :(得分:1)

您的String""而且这不是数字 - 您可以检查此案例,例如

long l=(id != null && id.trim().length() > 0) ? Long.parseLong(id.trim()) : 0;

或者,添加一个try {} catch块和一个默认值,如

long l = 0;
try {
  l = Long.parseLong((id != null) ? id.trim() : "0");
} catch (Exception e) {
  e.printStackTrace();
}

答案 1 :(得分:0)

看起来像

E/AndroidRuntime(1554): java.lang.NumberFormatException: Invalid long: "" 08-30 11:13:00.995: 

表示您尝试解析的字符串实际上是空字符串。这不会映射到有效的long,因此您会获得异常。您可能想要检查这样的特殊情况,或者使用try..catch来优雅地处理它们。

答案 2 :(得分:0)

尝试以下代码并检查您是否正在转换数字

    long l=0;
    String res=etgetinfo.getText().toString().trim();
    if(!res.equals(""))
    l=Long.valueOf(res);
相关问题