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のサブクラスをSimpleDateFormatとして使用して、独自のDateFormatを定義することもできます。

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

このコードを試すことができます:

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 df = new SimpleDateFormat(...);

この例をチェックして、使用方法を確認してください。

于 2012-07-10T12:05:36.523 に答える
1

クラスDateFormatのメソッド解析は静的ではありません。解析メソッドを呼び出す前に、まずDateFormatオブジェクトをインスタンス化する必要があります。

また、パーサーが何をどのように解析するかを認識できるように、日付形式の「ルール」を構成する必要があります。

SimpleDateFormatクラスを参照してください:http: //docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2012-07-10T12:10:02.193 に答える