SimpleDateFormat.getDateInstance()中的Java NumberFormatException

时间:2013-10-30 14:20:30

标签: java android simpledateformat numberformatexception

我无法理解此代码中NumberFormatException的原因:

SimpleDateFormat format = (SimpleDateFormat) SimpleDateFormat.getDateInstance();

以下是我的LogCat输出:

10-30 18:04:05.600: W/System.err(23899): java.lang.NumberFormatException: Invalid int: ""
10-30 18:04:05.600: W/System.err(23899):    at java.lang.Integer.invalidInt(Integer.java:138)
10-30 18:04:05.600: W/System.err(23899):    at java.lang.Integer.parseInt(Integer.java:359)
10-30 18:04:05.600: W/System.err(23899):    at java.lang.Integer.parseInt(Integer.java:332)
10-30 18:04:05.600: W/System.err(23899):    at java.util.Calendar.getHwFirstDayOfWeek(Calendar.java:807)
10-30 18:04:05.600: W/System.err(23899):    at java.util.Calendar.<init>(Calendar.java:745)
10-30 18:04:05.600: W/System.err(23899):    at java.util.GregorianCalendar.<init>(GregorianCalendar.java:338)
10-30 18:04:05.600: W/System.err(23899):    at java.util.GregorianCalendar.<init>(GregorianCalendar.java:314)
10-30 18:04:05.608: W/System.err(23899):    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:378)
10-30 18:04:05.608: W/System.err(23899):    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
10-30 18:04:05.608: W/System.err(23899):    at java.text.DateFormat.getDateInstance(DateFormat.java:462)
10-30 18:04:05.608: W/System.err(23899):    at java.text.DateFormat.getDateInstance(DateFormat.java:443)
10-30 18:04:05.608: W/System.err(23899):    at java.text.DateFormat.getDateInstance(DateFormat.java:426)
10-30 18:04:05.608: W/System.err(23899):    at com.mycompany.mypackage.InboxFragment$15.setViewValue(InboxFragment.java:396)

修改 DateFormat format = DateFormat.getDateInstance();

的相同例外情况

4 个答案:

答案 0 :(得分:0)

将其更改为

SimpleDateFormat format = SimpleDateFormat.getDateInstance();

答案 1 :(得分:0)

看起来您正在尝试将空字符串“”解析为int。

另请参阅:Unable to accept integer value through EditText

答案 2 :(得分:0)

你试试这个:

SimpleDateFormat.getDateInstance()

实际返回DateFormat,并尝试在SimpleDateFormat中强制转换它, 试图将一些字符串转换为数字格式, 导致NumberFormatException。

这是类层次结构:     java.lang.Object继承    ↳java.text.Format        ↳java.text.DateFormat            ↳java.text.SimpleDateFormat

快乐编码......

答案 3 :(得分:0)

.getDateInstance继承自DateFormat,因此返回DateFormat。 DateFormat是SimpleDateFormat的超类。您不能将超类类型转换为其子类之一。这是你在这里尝试做的,这就是你得到这个错误的原因。当您将程序员转换为SimpleDateFormat时,编译器会信任该程序员,这就是您在编译期间没有收到任何错误的原因。

简而言之,您不能将子类分配给其超类的实例。有很多方法可以解决这个问题,但在这种情况下,你只是打破了继承。不要总是信任eclipse提供的quickfix;)