在一个函数中创建一个数组并在另一个函数中读取它,而不需要返回语句

Posted

技术标签:

【中文标题】在一个函数中创建一个数组并在另一个函数中读取它,而不需要返回语句【英文标题】:Create an array in one function and read it in another without return statements 【发布时间】:2012-02-28 09:11:20 【问题描述】:

我正在尝试在一种方法(或函数?或对象?附带问题 - 所有这些词之间有什么区别?)中创建一个数组,然后在另一种方法中使用它的长度(我将在其他地方也一样)。我的老师告诉我我不必返回数组,因为我只是在修改位置,所以数组不会被破坏或其他什么。我会在 main 中声明它,但是在我得到大小输入后我无法调整它的大小(我不认为?)。

有人关注这个吗?

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();
    


【问题讨论】:

下次别忘了加一个Java标签。 【参考方案1】:

您可以通过将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 调用,那么您要么必须将数组创建代码放在主函数中,要么必须求助于返回语句或类变量。

【讨论】:

她说我们不允许使用任何类级别的变量。这让我很生气,因为我觉得我可以通过其他方式轻松做到这一点。 啊,在那种情况下,我想她希望你将板子作为参数传递给你的函数。我会编辑我的帖子。 是的。将板子传递给函数是这里的方法。

以上是关于在一个函数中创建一个数组并在另一个函数中读取它,而不需要返回语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在主函数中获取整数输入并在任何类中创建该大小的数组?

如何调用在另一个函数中创建的对象

在useEffect中创建一个异步函数,并在函数的while循环中使用await,似乎不起作用

在一个线程中修改成员变量并在另一个线程中读取

如何在一个类中创建 CoreData 实体并在另一个类中访问?

DBT 模型:如何从查询中创建变量并在 If 语句中使用它