可能重复:
What is the reason behind “non-static method cannot be referenced from a static context”?
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)不能从静态上下文引用
请帮帮我
答案 0 :(得分: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`.
答案 1 :(得分: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);
}
}
答案 2 :(得分: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;
}