4

我的主要内容如下:

Date gameDate = DateFormat.parse(scanner.nextLine());

本质上我想用 util.Scanner 扫描一个日期

哪个命中错误:

无法从 DateFormat 类型对非静态方法 parse(String) 进行静态引用

现在,我已经查看了这个错误,但它似乎不像这个例子那么明确。

我该如何解决这个问题?

4

6 回答 6

7

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();
于 2012-07-10T12:07:49.887 回答
2

API 文档中所述:

DateFormat df = DateFormat.getDateInstance();
myDate = df.parse(myString);
于 2012-07-10T12:04:57.967 回答
2

您必须创建一个 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

于 2012-07-10T12:10:25.480 回答
1

DateFormat是一个需要具体实例化的抽象类。

例如

   DateFormat df = new SimpleDateFormat(...);

查看此示例以了解如何使用它。

于 2012-07-10T12:05:36.523 回答
1

你可以试试这段代码:

String format = "yyyy-MM-dd"; // put proper format here
Date gameDate = new SimpleDateFormat(format).parse(scanner.nextLine());
于 2012-07-10T12:07:37.457 回答
1

DateFormat 类的方法解析不是静态的。您必须先实例化一个 DateFormat 对象,然后才能调用它的 parse 方法。

您还必须配置日期格式的“规则”,以便解析器知道要解析什么以及如何解析。

请参阅 SimpleDateFormat 类: http ://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2012-07-10T12:10:02.193 回答