我的主要内容如下:
Date gameDate = DateFormat.parse(scanner.nextLine());
本质上我想用 util.Scanner 扫描一个日期
哪个命中错误:
无法从 DateFormat 类型对非静态方法 parse(String) 进行静态引用
现在,我已经查看了这个错误,但它似乎不像这个例子那么明确。
我该如何解决这个问题?
我的主要内容如下:
Date gameDate = DateFormat.parse(scanner.nextLine());
本质上我想用 util.Scanner 扫描一个日期
哪个命中错误:
无法从 DateFormat 类型对非静态方法 parse(String) 进行静态引用
现在,我已经查看了这个错误,但它似乎不像这个例子那么明确。
我该如何解决这个问题?
parse()
不是静态方法。这是一个实例方法。您需要创建一个 DateFormat 实例,然后调用parse()
此实例:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date gameDate = dateFormat.parse(scanner.nextLine());
静态方法属于一个类。打电话没有意义Person.getName()
。但是打电话是有道理的
Person pureferret = new Person("Pureferret");
String name = pureferret.getName();
如API 文档中所述:
DateFormat df = DateFormat.getDateInstance();
myDate = df.parse(myString);
您必须创建一个 DateFormat 实例才能调用“解析”。只有静态方法才能被调用而不需要实例化指定类的实例。您可以使用默认 DateFormat 调用获取实例:
DateFormat.getInstance()
然后你可以打电话
DateFormat.getInstance().parse()
或者您可以使用例如 DateFormat 的子类定义您自己的 DateFormat,如 SimpleDateFormat。
DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
myFormat.parse(myString);
在此处查看如何自定义它:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
你可以试试这段代码:
String format = "yyyy-MM-dd"; // put proper format here
Date gameDate = new SimpleDateFormat(format).parse(scanner.nextLine());
DateFormat 类的方法解析不是静态的。您必须先实例化一个 DateFormat 对象,然后才能调用它的 parse 方法。
您还必须配置日期格式的“规则”,以便解析器知道要解析什么以及如何解析。
请参阅 SimpleDateFormat 类: http ://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html