-5

重複の可能性:
「静的コンテキストから非静的メソッドを参照できない」理由は何ですか?

import java.io.*;

public class Pay
{
     boolean checkCard(int cardNumber)
    {
        boolean flag=false;
        if(cardNumber==12)  
        return flag;
    }

    public static void main(String args[])throws SQLException
        {
            boolean f=checkCard(12);
            System.out.println("\n Card Details "+f);
        }

}

非静的メソッド checkCard(int,String,String) を静的コンテキストから参照できないというエラー メッセージが表示されます

助けてください

4

3 に答える 3

2
boolean checkCard(int cardNumber)
        {
            boolean flag=false;
            if(cardNumber==12)  
            return flag;
        }

静的メソッドではありません。インスタンスメソッドです。

しかし、静的メソッドからアクセスしようとしています

public static void main(String args[])throws SQLException
            {
                boolean f=checkCard(12);
                 .....
}

インスタンス メソッドにアクセスするには、クラスをインスタンス化し、そのインスタンスでこのメソッドをクラス化する必要があります。

例:

new Pay().checkCard(12);

(また)

change the checkCard method signature to `static`.
于 2012-10-27T03:35:31.170 に答える
0

非静的メソッドまたは変数は、静的メソッド内で直接 (参照なしで) 使用できません。

静的メソッドまたは変数は、静的メソッド内で直接使用できます。

public class Pay
    {
         static boolean checkCard(int cardNumber)
        {
            boolean flag=false;
            if(cardNumber==12)  
            return flag;
            else
               return boolean;---------missing
        }

        public static void main(String args[])throws SQLException
            {
                boolean f=checkCard(12);
                System.out.println("\n Card Details "+f);
            }

    }

また、これを呼び出すインスタンスを作成することもできます

 public class Pay
        {
             boolean checkCard(int cardNumber)
            {
                boolean flag=false;
                if(cardNumber==12)  
                return flag;
                else
                   return boolean;---------missing
            }

            public static void main(String args[])throws SQLException
               {
                    Pay p= new Pay();
                    boolean f=p.checkCard(12);
                    System.out.println("\n Card Details "+f);
                }

        }
于 2012-10-27T03:37:17.703 に答える
0

Pay クラスをインスタンス化する必要はありません。実際に checkCard 関数を静的にしたい場合は、関数が静的であることを示す必要があります。

static boolean checkCard(int cardNumber)
{
    boolean flag=false;
    if(cardNumber==12)
        flag = true;    // is this the behavior you want?
                        //  your original function had no
                        //  change to `flag` based on the condition.
    return flag;
}
于 2012-10-27T03:44:12.797 に答える