我在这里试图获得现金'来自Player方法的变量包含在我的wagerBet()方法中的等式中。目前Eclipse告诉我变量' cash'不能静态引用非静态字段现金'。我试图寻找关于这个问题意味着什么的解释,但我只是得到解释,使用更多的编程术语,我不明白我是这个东西的新手。
class Player {
private ArrayList<Card>hand;
private double cash, bet;
public Player(double theCash)
{
cash = theCash; //'cash' variable here
hand = new ArrayList<Card>();
}
public static double wagerBet()
{
Scanner in = new Scanner(System.in);
System.out.print("Wager a bet: ");
double bet = in.nextDouble();
cash = cash - bet; // needs to be transferred here
System.out.println("You wagered " + bet + ". " + "Now you have " + cash + " cash left.");
return bet;
}
public void rewardBet(double bet)
{
cash = cash + (bet * 2); //cash and bet variable needs to be transferred here as well
System.out.println("You now have " + cash + "cash.");
}
有什么建议吗?
答案 0 :(得分:2)
cash
变量不属于任何方法。它是该类的实例成员。您无法从静态方法访问它。如果您只需要在那里读取它的值,请将该方法设置为非静态,或将“现金”作为参数传递给它。
答案 1 :(得分:1)
您可能想要了解一些Java基础知识:
http://docs.oracle.com/javase/tutorial/java/javaOO/index.html
您正尝试在静态方法中使用Player的属性。静态方法不是实例的一部分,因此它不知道&#34; cash&#34; (因为它对每个Player实例而不是单个变量都是唯一的。)
删除&#34;静态&#34;从wagerBet,它成为一个播放器的方法。这样每个玩家都是独一无二的,所以它知道使用&#34;现金&#34;它属于同一个玩家。
答案 2 :(得分:0)
删除静电
public static double wagerBet()
答案 3 :(得分:0)
只有一个真正的问题。要了解static
是什么。
基本方法,在你足够好之前,根本不要使用static
。在所有情况下删除它而不是&#34; main&#34; (你必须把它保留在那里)。