0

我无法理解这段代码中 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

4 回答 4

0

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

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

于 2013-10-30T14:49:37.850 回答
0

你试试这个:

SimpleDateFormat.getDateInstance()

它实际上返回 DateFormat,并且您尝试将其转换为 SimpleDateFormat,它尝试将某些字符串转换为数字格式,这会导致 NumberFormatException。

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

快乐的编码...

于 2013-10-30T14:26:10.613 回答
0

把它改成

SimpleDateFormat format = SimpleDateFormat.getDateInstance();
于 2013-10-30T14:24:53.033 回答
0

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

另请参阅:无法通过 EditText 接受整数值

于 2013-10-30T14:25:18.050 回答