私は私のメインに次のような行があります:
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のサブクラスを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
このコードを試すことができます:
String format = "yyyy-MM-dd"; // put proper format here
Date gameDate = new SimpleDateFormat(format).parse(scanner.nextLine());
DateFormat
具体的なインスタンス化が必要な抽象クラスです。
例えば
DateFormat df = new SimpleDateFormat(...);
この例をチェックして、使用方法を確認してください。
クラスDateFormatのメソッド解析は静的ではありません。解析メソッドを呼び出す前に、まずDateFormatオブジェクトをインスタンス化する必要があります。
また、パーサーが何をどのように解析するかを認識できるように、日付形式の「ルール」を構成する必要があります。
SimpleDateFormatクラスを参照してください:http: //docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html