0

执行以下代码时,我收到ParseException错误:

String date;
Scanner in = new Scanner(System.in);
System.out.println("Please enter the date of birth, in format 'January 2, 2010'");
date = in.nextLine();
in.close();
Date birth = new Date();
birth = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
birthcal.setTime(birth);

我想我明白为什么,因为我没有清理输入。我想知道解决这个问题的最佳方法是什么。任何解析日期的帮助将不胜感激。

(PS 当我试图捕捉错误时,会弹出另一个特殊问题,即:

String date;
Scanner in = new Scanner(System.in);
System.out.println("Please enter the date of birth, in format 'January 2, 2010'");
date = in.nextLine();
in.close();
Date birth = new Date();
try {
    birth = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
birthcal.setTime(birth);

这里的问题是NullPointerException。我不明白这怎么可能。我想当你用 初始化时new Date(),它会为它设置一个值,这意味着代码的最后一行将至少指向 SOMETHING。对此的任何帮助也将不胜感激。)

4

1 回答 1

0

我客人说birthcal 是java.util.Calendar类的对象引用(我看不到引用的定义)。

如果你改变你的最后一行(birthcal.setTime(birth);)

至:

Calendar birthcal = Calendar.getInstance();
birthcal.setTime(birth);

你不会有问题。如果你走

Calendar birthcal = null;
birthcal.setTime(birth);

你会得到java.lang.NullPointerException,因为你的代码试图将“出生”设置为空。

于 2013-11-04T20:00:21.740 回答