Я прочитал документы Oracle относительно области действия и контроля доступа, но это просто не прилипает, поэтому я предполагаю, что моя проблема исходит из моего неспособности понять. В любом случае Вот мой код. Я пытаюсь получить доступ к уникальным объектам Player, созданным в массиве, и изменять их уникальные переменные, например, их балансы, используя методы из класса Player. Любые решения и ОСОБЫЕ объяснения приветствуются!Нестатическая переменная arr не может ссылаться на статический контекст
public class Player
{
private int currentBal;
private String myName;
private int rollOne;
private int rollTwo;
private int rollTotal;
private int doublesCount;
private int currentPosition;
private int currentDoubles;
private int move;
private int moveMult;
private int newBal;
private boolean rollAgain;
private boolean inJail;
public Player(String userName, int changeInMoney)
{
myName = userName;
currentBal -= changeBalance(changeInMoney);
}
public int changeBalance(int changeInMoney){newBal -= changeInMoney; return newBal;}
public int viewBalance(){return currentBal;}
Это мой класс PlayerArray.
public class PlayerArray
{
Scanner scan = new Scanner(System.in);
private int numbHuman;
private Player[] arr;
private String[] userName;
private int startingMoney;
public PlayerArray()
{
Scanner scan = new Scanner(System.in);
System.out.println("There will be 4 players, how many do you wish to be human? 0><4");
numbHuman = scan.nextInt();
while (numbHuman < 1 || numbHuman > 4)
{
System.out.println("Invalid entry, try again.");
numbHuman = scan.nextInt();
}
arr = new Player[numbHuman];
userName = new String[numbHuman];
startingMoney = 1500;
for(int i = 0; i < arr.length; i++)
{
System.out.println("Player " + (i + 1) + ", Please enter your first name:");
userName[i] = scan.next();
arr[i] = new Player(userName[i],startingMoney);
}
}
public Player[] getPlayerArray()
{
int charge = 500;
arr[0].changeBalance(charge);
System.out.println(arr[0].viewBalance()); //look here as example
return arr;
}
}
это мой класс игрока, минус некоторые методы, которые я не могу использовать до конца. Пыльник мой основной метод называют,
import java.util.Scanner;
import java.util.Random;
public class Launcher
{
private Planet myTest;
private PlanetInfo myPlanetInfo;
private static Player[] arr;
public static void main(String[] args)
{
Launcher testLauncher = new Launcher();
PlayerArray myArray = new PlayerArray();
Pay myCharge = new Pay(); // continue work on charges
myArray.getPlayerArray();
//STILL TRYING TO GET BELLOW LINE TO WORK LAST NIGHT!!!
int testBal = arr[0].viewBalance(); //ERROR HERE
System.out.println("player 1's balance: " + testBal);
}
}
Ошибка «java.lang.NullPointerException: нуль»
Это может помочь вам о [почему?] (Http://javarevisited.blogspot.in/2012/02/why-non-static-variable-cannot-be.html) –
Для начала , в следующий раз, когда вы получите сообщение об ошибке, попробуйте выполнить копирование всего сообщения об ошибке в Google (после удаления списков классов/методов/переменных для конкретной программы).[Вы будете удивлены результатами] (https://www.google.com/search?q=%22non-static+variable%22+%22cannot+be+referenced+from+a+static+context%22). – BalusC
Отредактирован и изменен мой код выше, чтобы показать новую ОШИБКУ, пожалуйста, посмотрите там. –