-1

わかりました...だから私は多くの試行錯誤をしました...そして、usFormatメソッドをメインに呼び出すことができないようで、全体をかなり台無しにしてしまったと思います笑..何か助けていいだろう。ただ...初心者レベルでお願いします。

 class Date {
     String date;
     String day;
     String month;
     String year;
     StringTokenizer st;
     Scanner sc = new Scanner (System.in);


     //instance vars go here
     public Date (String date){
         while (sc.hasNextLine()) {
             st = new StringTokenizer (sc.nextLine());
             this.month =  st.nextToken();
             this.day   =  st.nextToken();
             this.year  =  st.nextToken();
        }

        } //end constructor

        public String usFormat () {
            return month + " " + day + "," + year;
        } //end usFormat
        public String euFormat () {
            return null;
        } //end euFormat

        public static void main (String[] args){
            Date usFormat = new Date (date);

        }
    } 
4

8 に答える 8

2

からメソッドを呼び出すので、そのメソッド (および) も静的static methodにする必要があります。usFormat()euFormat()

public static String ...

静的とは基本的に、クラスのインスタンスが必要ないことを意味します。だから..インスタンスを実行する必要はありませmainんが、インスタンスを呼び出す必要がありますusFormat()(静的ではないため)。それはうまくいきません。したがって、エラー。

これらのメソッドを静的にしたくない場合は、コードをメイン クラスから別のクラスに移動することを検討してください。in mainを使用してこのクラスのインスタンスを作成できますnew(必要に応じて、これは指定されたクラスでも機能します(new Date()).usFormat())。

于 2013-05-24T16:58:45.970 に答える
0

Date という名前のインスタンス クラスを定義したので、次の手順を実行するだけです。

    public static void main (String[] args){
        Date usFormat = new Date (date);
        System.out.println(date.usFormat());
    }

Dateクラスのメソッドを静的にする必要はありません。

于 2013-05-24T17:01:56.817 に答える
0

別のアプローチは、たとえば、main メソッド内に Date のインスタンスを作成してから実行するmyDate = new Date("");ことです。myDate.usFormat();

于 2013-05-24T17:02:19.677 に答える
0

から非メソッドを呼び出すにstatic methodは、次のいずれかを実行する必要があります。

1) 非静的メソッドが定義されているクラスをインスタンス化します。

Date usFormat = new Date (date);
System.out.println(date.usFormat());

2) 非静的メソッドを作成するstatic

public static .... 

2 番目のオプションはより多くのリファクタリングを必要とするため、最初のオプションを使用することをお勧めします。

于 2013-05-24T17:02:19.757 に答える
0

あなたのコードでは、静的/非静的メソッドに問題はありません。いくつかのタイプミスのみ:

 class Date {
 String date;
 String day;
 String month;
 String year;

 Scanner sc = new Scanner (System.in);


 //instance vars go here
 public Date (String date){
         StringTokenizer st= new StringTokenizer (date, " ");
         this.month =  st.nextToken();
         this.day   =  st.nextToken();
         this.year  =  st.nextToken();

    } //end constructor
    public String usFormat() {
        return month + " " + day + "," + year;
    } //end usFormat
    public String euFormat() {
        return null;
    } //end euFormat
    public static void main (String[] args){
      Date usFormat = new Date ("20 10 2013");    
    }
} 

ただし、質問については、静的メソッドを呼び出すために、クラスのインスタンスは必要ありません。

于 2013-05-24T17:17:18.813 に答える
-2

日付を静的として定義します。static String date;static メソッド main から非 static を参照することはできません

于 2013-05-24T17:02:12.113 に答える