"Calendar.getDisplayName"给出"非法参数异常"和"未知来源"



问题—我的应用程序用于跨几百台计算机的生产环境中。这个问题出现在安装了一些新电脑后,发现我的应用程序只在新电脑上崩溃。新电脑带有JAVA v8u5,为了解决这个问题,我还安装了v7u55(我认为这可能是一个版本问题)。*我正在编译使用JDK v7u45 **

根本原因-失败的代码是对日历的调用。getDisplayName(int, int, Locale)

错误代码:

        System.out.println("Getting calendar instance");
        Calendar instanceCalendarObj = Calendar.getInstance();
        String date = instanceCalendarObj.getDisplayName(Calendar.MONTH, 0, Locale.ENGLISH);
        date = date.concat(" "+String.valueOf(instanceCalendarObj.get(Calendar.DAY_OF_MONTH)));
        date = date.concat(", "+String.valueOf(instanceCalendarObj.get(Calendar.YEAR)));
        JOptionPane.showMessageDialog(this, date);

错误信息:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
    at java.util.Calendar.checkDisplayNameParams(Unknown Source)
    at java.util.Calendar.getDisplayName(Unknown Source)

getDisplayName()方法传递错误的参数

第二个参数为样式,取值为Calendar.SHORTCalendar.LONG。如下所示使用这些常量:

Calendar c = Calendar.getInstance();
c.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.ENGLISH);
c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH);

顺便说一句,Calendar.SHORTCalendar.LONG的常数值是1和2(您在代码中传递了0)。但是一定要使用常量名而不是它们的值!

相关内容

  • 没有找到相关文章

最新更新