我必须上课,一个是智能卡,另一个是CardLock。 SmartCard类创建一个新对象,其名称和人员状态可以为true或false。
现在,CardLock类应该具有一种方法,我可以在其中刷卡,并从最后刷过的卡中获取信息。
我的代码如下:
public class CardLock{
SmartCard lastCard;
public SmartCard swipeCard(SmartCard newCard){
lastCard = newCard;
}
public SmartCard getLastCardSeen(){
return lastCard;
}
public static void main(String[] args){
System.out.println("Swiping card");
SmartCard cardA = new SmartCard("Anna Undergrad", false);
swipeCard(cardA);
System.out.println(cardA.getOwner() + " card swiped.");
SmartCard cardB = new SmartCard("Dr. John Turpentine", true);
System.out.println("The last card swiped was by " + cardA.getLastCardSeen().getOwner());
}
现在,我收到一个错误“无法从静态上下文中引用非静态方法SwipeCard(SmartCard)”,这使我很难理解。
另一个错误是在cardA.getLastCardSeen()。getOwner()处出现的,即使它在SmartCard中并且是公共的,也无法找到getOwner方法。
感谢thelp。
答案 0 :(得分:0)
为swipeCard
对象定义了CardLock
方法。您需要在其上调用该方法的CardLock
对象。
答案 1 :(得分:0)
我没有完全了解您要实现的目标,但是得到“无法从静态上下文引用非静态方法SwipeCard(SmartCard)”错误的原因是主方法是静态的,而您的swipeCard( )方法不是。将其设置为静态,错误将消失。您只能从静态方法中引用静态方法。 cardA对象也是SmartCard类型。因为您还没有发布该类,所以我不能确定,但是我认为SmartCard类没有该方法。您能否更具体地说明您要执行的操作并发布SmartCard类的代码。我在下面编辑了您的代码,看看是否有帮助。
public class CardLock {
SmartCard lastCard;
public static void swipeCard(SmartCard newCard) {
lastCard = newCard;
}
public static SmartCard getLastCardSeen() {
return lastCard;
}
public static void main(String[] args) {
System.out.println("Swiping card");
SmartCard cardA = new SmartCard("Anna Undergrad", false);
swipeCard(cardA);
System.out.println(cardA.getOwner() + " card swiped.");
SmartCard cardB = new SmartCard("Dr. John Turpentine", true);
System.out.println("The last card swiped was by " + getLastCardSeen().getOwner());
}
}
答案 2 :(得分:0)
首先,您的功能 SmartCard swipeCard(SmartCard newCard)定义不明确。 您应该像这样定义它:
public void swipeCard(SmartCard newCard)
如果您希望它在编写时执行。
接下来,您不能像这样调用 swipeCard(cardA); ,因为它不是静态方法。如果要这样做,则必须将关键字 static 添加到函数中,例如:
public static void swipeCard(SmartCard newCard)
您可以在Static methods vs instance methods java
上了解有关静态方法的更多信息。最后,向我们展示您的 SmartCard 类会有所帮助。