gpt4 book ai didi

java - 从子类构造函数调用实例方法

转载 作者:行者123 更新时间:2023-11-30 04:16:20 25 4
gpt4 key购买 nike

我正在编写一个简单的二十一点程序,随着我对 Java 的了解越来越多,我计划对其进行扩展。我的类(class)没有很好地涵盖继承,而且他们根本懒得讨论子类。

当玩家决定结束游戏时,我想打印出玩家的总筹码数。每当我编写打印语句时,都会收到错误:

Cannot make a static reference to the non-static field alice.

我不知道 Eclipse 中的非静态字段是什么意思,因为我熟悉的唯一静态是在顶级方法中。我是否必须创建一个名为 Player 的完全独立的类才能进行引用?

我附加了一段与子类和整个主方法相关的代码片段。此外,这是一个个人项目,而不是家庭作业,旨在帮助构建我的作品集,因此我欢迎您认为有值(value)的任何其他建议。感谢您的帮助。

public class BlackJack 
{

public class Player extends BlackJack
{
public int wallet;
private int hand;

public Player(int playerHand, int playerWallet)
{
wallet = playerWallet;
hand = playerHand;
}

public int getWallet()
{ return wallet; }
}

Player alice = new Player(0, 250);

public static void main(String[] args)
{
System.out.println("Welcome to Black Jack. Type begin to get started.");

String begin = "begin";
String end = "end";
Scanner keyboard = new Scanner(System.in);

while (!keyboard.equals(end))
{

}
System.out.println("You walked away with $" + alice.getWallet() + ". Thanks for playing!");
}

}

最佳答案

您的变量 alice 正在 main() 中使用,它是静态的,main() 并不“存在”于对象,但您的变量 alice 必须位于其中。对代码进行此更改以在对象“内部”执行非静态方法 run() (run 与 main 具有相同的代码,只是更改为非静态方法):

public static void main(String[] args) {
new BlackJack().run(args);
}

public void run(String[] args) {
System.out.println("Welcome to Black Jack. Type begin to get started.");

String begin = "begin";
String end = "end";
Scanner keyboard = new Scanner(System.in);

while (!keyboard.equals(end))
{

}
System.out.println("You walked away with $" + alice.getWallet() + ". Thanks for playing!");
}

关于java - 从子类构造函数调用实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com