2013-10-30 45 views
0

我不明白這個代碼NumberFormatException異常的原因:的Java NumberFormatException的在SimpleDateFormat.getDateInstance()

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();

回答

0

將其更改爲

SimpleDateFormat format = SimpleDateFormat.getDateInstance(); 
0

你試試這個:

SimpleDateFormat.getDateInstance() 

實際上返回日期格式,並嘗試將其丟在SimpleDateFormat的, 它試圖將一些字符串到數字格式, 這導致NumberFormatException。

這是類層次結構: java.lang.Object繼承 ↳java.text.Format子 ↳java.text.DateFormat中 ↳java.text.SimpleDateFormat的

編碼快樂......

0

.getDateInstance從DateFormat繼承,並返回一個DateFormat。 DateFormat是SimpleDateFormat的超類。您不能將超類轉換爲其中一個子類。這是你在這裏試圖做的,這就是你得到這個錯誤的原因。當你把它轉換成SimpleDateFormat時,編譯器會信任程序員,這就是爲什麼在編譯過程中你沒有收到任何錯誤。

簡而言之,您不能將子類指派給其超類的實例。有很多方法可以解決這個問題,但在這種情況下,你只是簡單地打破了繼承。不要總是相信eclipse提供的快速修復;)

+0

此代碼拋出相同的異常'DateFormat format = DateFormat.getDateInstance();' –