Создайте массив в одной функции и прочитайте его в другой без операторов возврата - PullRequest
4 голосов
/ 07 февраля 2012

Я пытаюсь создать массив в одном методе (или функции? Или объекте? Дополнительный вопрос - в чем разница между всеми этими словами?), А затем использовать его длину в другом методе (и я буду использовать его в и в других местах). Мой учитель сказал мне, что мне не нужно возвращать массив, потому что я только изменяю местоположение, поэтому массив не уничтожен или что-то еще. Я бы объявил это в основном, но тогда я не смогу измерить его после того, как получу входные данные размера (я не думаю?).

Кто-нибудь следит за этим?

public class Update {

public static void main(String[] args) {

    System.out.println("This program will simulate the game of Life.");

    createMatrix();

    // birthAndLive();

    printMatrix();

}

public static void createMatrix() {

    Scanner console = new Scanner(System.in);

    System.out.println("Please input the size of your board.");

    System.out.println("Rows:");
    final int rows = console.nextInt();

    System.out.println("Columns:");
    final int columns = console.nextInt();

    System.out.println("Please enter a seed:");
    final long seed = console.nextLong();

    boolean[][] board = new boolean[rows][columns];
    Random seedBool = new Random(seed);

}

public static void printMatrix() {

    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board[i].length; j++) {
            if (board[i][j] == false)
                System.out.print(" - ");
            else
                System.out.print(" # ");
        }
        System.out.println();
    }

}

1 Ответ

3 голосов
/ 07 февраля 2012

Вы можете решить эту проблему, передав board функции печати. ​​

class Update {
    public static void main(String[] args) {

        System.out.println("This program will simulate the game of Life.");
        createMatrix();

        // birthAndLive();

        printMatrix();

    }
    public static void createMatrix() {

        Scanner console = new Scanner(System.in);

        System.out.println("Please input the size of your board.");

        System.out.println("Rows:");
        final int rows = console.nextInt();

        System.out.println("Columns:");
        final int columns = console.nextInt();

        System.out.println("Please enter a seed:");
        final long seed = console.nextLong();

        boolean[][] board = new boolean[rows][columns];
        Random seedBool = new Random(seed);

        printMatrix(board);
    }

    public static void printMatrix(boolean[][] board) {

        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                if (board[i][j] == false)
                    System.out.print(" - ");
                else
                    System.out.print(" # ");
            }
            System.out.println();
        }

    }
}

Я не знаю точно, сколько кода ваш учитель позволяет вам изменять.Если все функции необходимо вызывать из main, то вам придется либо поместить код создания массива в основную функцию, либо вам придется прибегать к операторам возврата или переменным класса.

...