Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析日期并运行到';对非静态方法的静态引用';java中的错误_Java_Date Format_Non Static - Fatal编程技术网

解析日期并运行到';对非静态方法的静态引用';java中的错误

解析日期并运行到';对非静态方法的静态引用';java中的错误,java,date-format,non-static,Java,Date Format,Non Static,我的主要观点是: Date gameDate = DateFormat.parse(scanner.nextLine()); 基本上我想用util.Scanner扫描一个日期 这会导致错误: 无法从DateFormat类型对非静态方法parse(String)进行静态引用 现在,我已经注意到了这个错误,但它似乎没有这样明确 我该如何解决这一问题?如以下章节所述: DateFormat是一个需要具体实例化的抽象类 e、 g 查看如何使用它。您可以尝试以下代码: String format = "

我的主要观点是:

Date gameDate = DateFormat.parse(scanner.nextLine());
基本上我想用util.Scanner扫描一个日期

这会导致错误:

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

现在,我已经注意到了这个错误,但它似乎没有这样明确

我该如何解决这一问题?

如以下章节所述:


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

e、 g

查看如何使用它。

您可以尝试以下代码:

String format = "yyyy-MM-dd"; // put proper format here
Date gameDate = new SimpleDateFormat(format).parse(scanner.nextLine());
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();

类DateFormat的方法分析不是静态的。必须先实例化DateFormat对象,然后才能调用其解析方法

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

请参见SimpleDataFormat类:

您必须创建DateFormat的实例才能调用“parse”。 只有静态方法可以调用,而不需要指定类的实例。 您可以使用默认的DateFormat调用获取实例:

DateFormat.getInstance()
然后你可以打电话

DateFormat.getInstance().parse()
或者,您可以使用DateFormat的子类(例如SimpleDataFormat)定义自己的DateFormat

DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
myFormat.parse(myString);
在此处查看如何自定义它:


DateFormat.getDateInstance().parse(scanner.nextLine())
。但很有可能你需要指定格式。现在我们可以坐下来观看卡玛秃鹫突袭。@MarkoTopolnik为什么我需要getDateInstance?好吧,你需要一些
DateFormat
或其子类的实例。我给了你一个例子,让你用最少的代码实例。让它适应你的需要。例如,您将使用
SimpleDataFormat
获得所需的一切。看看Javadoc。@MarkoTopolnik,啊,我想我的错误是认为
DateFormat
中的格式是动词,而不是名词;我以为这是某种方法,而不是类。@Marko抽象(不可实例化)类仍然可以有静态(类级)方法
DateFormat.getInstance().parse()
DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
myFormat.parse(myString);