Как использовать объект из основного метода в другом методе - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь использовать RandomGrid rGrid в методе compareGrids моего проекта, однако я не могу понять, как это сделать. Изначально у меня был конструктор RandomGrid вне метода main, но я получал ошибку переполнения стека всякий раз, когда пытался его запустить. У меня есть другой класс, очень похожий на этот, с конструктором ButtonGrid вне метода main, и он работает нормально. Спасибо за любую помощь!

public static void main(String[] args) {
    new ButtonGrid(WIDTH, LENGTH);
    RandomGrid rGrid = new RandomGrid(WIDTH, LENGTH);

}
public int compareGrids() {
    String[] args = {};
    ButtonGrid.main(args);

    int numCorrect = 0;
    for (int i = 0; i < WIDTH; i++) {
        for (int j = 0; j < LENGTH; j++) {
         if (grid[i][j].getBackground() == ButtonGrid.main(rGrid).grid[i][j].getBackground()) {
                numCorrect++;
            }
        }
    }
    System.out.println(numCorrect);
    return numCorrect;
} 

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Чтобы использовать rGrid в compareGrids, он должен быть переменной уровня класса. декларировать RandomGrid rGrid = новая RandomGrid (WIDTH, LENGTH); вне главной. Это должно решить вашу проблему. В настоящее время область действия rgrid заканчивается, как только основной метод завершает

Пожалуйста, вставьте ошибку переполнения стека, которую вы упомянули

0 голосов
/ 09 мая 2018

Простой ответ: Сделайте CompareGrids () статическим и добавьте аргументы

public static int compareGrids(Grid grid1, Grid grid2) {
 ...
}

Это вопрос начального уровня. Вы можете обратиться к простому Java-учебнику, чтобы понять основные элементы класса и модификаторы

...