Задать вопрос
@Koshkasobaka

Как передать несколько массивов из метода в метод?

Здравствуйте. У меня есть метод choiceLevel, который возвращает таблицу запрашиваемого уровня сложности, и метод sortBoardsByLevels, генерирующий таблицы и сортирующий их по разным уровням сложности до момента, пока будут сформированы таблицы всех трех уровней сложности. Как мне вернуть из второго метода таблицы (а это аж 3 двумерных массива) ? Можно конечно объединить методы в один, но получается громоздко и некрасиво
public int[][] choiceLevel(int size, int level) {
        sortBoardsByLevels(size);
        int[][] gameReadyBoard = new int[size][size];
        switch (level) {
            case (1):
                gameReadyBoard = board1; // вот здесь и ниже хочу получить нужные таблицы
                break;
            case (2):
                gameReadyBoard = board2;
                break;
            case (3):
                gameReadyBoard = board3;
                break;
        }
        printTheBoard(gameReadyBoard);
        return gameReadyBoard;
    }

private void sortBoardsByLevels(int size) {
        int[][] board1 = new int[size][size];
        int[][] board2 = new int[size][size];
        int[][] board3 = new int[size][size];

        BoardFactory boardFactory = new BoardFactory();
        int[][] board = boardFactory.generateBoard(size); // генерируется предварительная таблица, не готовая для игры

        boolean a = false;
        while (!a) {
            int[][] unsorted = selectCell(board); // получаем таблицу с рандомно скрытыми клетками, таблица готова к игре, но не отсортирована по уровням
            int count = countAmountOfHiddenCells(unsorted); // узнаем количество скрытых клеток
            if (count >= 28 && count < 35) board1 = unsorted;
            else if (count >= 35 && count < 42) board2 = unsorted;
            else if (count >= 42) board3 = unsorted;
            board = boardFactory.generateBoard(size);
            if (cheсkTheBoardIsFull(board1) && cheсkTheBoardIsFull(board2) && cheсkTheBoardIsFull(board3)) a = true;
        } // удостоверяемся, что получили таблицы всех уровней
    }
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Therapyx
@Therapyx
Data Science
Увы уже громоздко и не красиво.
Выходы:
1) Сделай класс с нужной информацией и возвращай один обьект, в котором будут все нужные массивы и любая доп. инфа.
О Классах и обьектах
2) Оставь все как есть (крайне мерзко) - и сделай к примеру ArrayList типа двухмертных массивов, где он будет содержать борд1 на индексе0, борд2 на индексе 1 и борд3 на индексе2
Пример
3) Сделать еще хуже: - 3 массива идут в стэтик (глобальное состояние), к которому можно обратится из любого уголка инстанции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Нужно просто прекращать писать на Java, как на C, и начать использовать ООП.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы