Reputation: 39
Here I am trying to have my 'cash' variable from the Player method be included in an equation in my wagerBet() method. Currently Eclipse is telling me that variable 'cash' cannot 'make a static reference to the non-static field cash'. I tried looking for explanations as to what this problem means but I'm just getting explanations that use even more programming terminology I don't understand being that I'm a rookie at this stuff.
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.");
}
Any suggestions?
Upvotes: 0
Views: 86
Reputation: 310860
The cash
variable doesn't belong to any method. It is an instance member of the class. You can't access it from a static method. Make the method non-static, or pass 'cash' to it as a parameter if you only need to read its value there.
Upvotes: 2
Reputation: 484
You might want to go through some Java basics:
http://docs.oracle.com/javase/tutorial/java/javaOO/index.html
You are attempting to use a property of Player in a static method. A static method is not part of an instance so it doesn't know what "cash" (as it's unique to every Player instance rather than a single variable).
Remove the "static" from wagerBet so that it becomes a method of Player. That way it's unique to every Player and so it'll know to use the "cash" of the same Player it's a part of.
Upvotes: 1
Reputation: 23029
There is only one real problem. To understand what static
is.
Basic approach, until you are good enough, is to NOT use static
at all. Remove it in all cases instead of "main" (you have to keep it there).
Upvotes: 0