从方法(Java)调用数组的声明

时间:2014-05-07 11:54:42

标签: java arrays

我对java很新,而且我假设我的程序是一个简单的问题。

对于方法arrayTest2,由于编译错误,我无法将其导入main:

"Cannot find symbol, symbol: variable dataStorage".

我试过也试过了声明:

arrayTest2(dataStorage[][])    

arrayTest2(dataStorage[5][5])`

但它们不起作用。

非常感谢任何帮助。

干杯

import io.*;

public class TrialArray
{
    public static void main(String [] args)
    {
        arrayTest();
        arrayTest2(dataStorage);
    }

    public static void arrayTest()
    {
        int[][] dataStorage = new int[5][5];

        dataStorage[1][2] = 1;

        System.out.printf("THIS PART WORKS");
    }

    public static void arrayTest2(int[][] dataStorage)
    {
        dataStorage[2][2] = 3;

        System.out.printf("THIS DOESNT");
    }

}

4 个答案:

答案 0 :(得分:3)

这里的问题是范围:在一个函数中定义的东西在另一个函数中不可见。您通常要做的就是返回值。像这样:

import io.*;

public class TrialArray
{
    public static void main(String [] args)
    {
        int[][] dataStorage = arrayTest();
        arrayTest2(dataStorage);
    }

    public static int[][] arrayTest()
    {
        int[][] dataStorage = new int[5][5];

        dataStorage[1][2] = 1;

        System.out.printf("THIS PART WORKS");

        return dataStorage;
    }

    public static void arrayTest2(int[][] dataStorage)
    {
        dataStorage[2][2] = 3;

        System.out.printf("THIS DOESNT");
    }

}

或者,您可以将dataStorage字段作为全局变量,但这可能非常令人困惑。要做到这一点,你要定义

public class TrialArray
{
    private static int[][] dataStorage;

    // ...

    public static void arrayTest() {
        dataStorage = new int[5][5];

        dataStorage[1][2] = 1;

        System.out.printf("THIS PART WORKS");
    }

    // ...
}

答案 1 :(得分:0)

您尝试将dataStorage传递给arrayTest - 函数,但dataStorage不是该类的字段,也不是main的局部变量(又名dataStorage)中不存在main

public static void main(String [] args) {
    arrayTest();
    arrayTest2(dataStorage); //<------- What is dataStorage?
}

Here is a little tutorial on variable scopes in Java。您可能想要返回在arrayTest()中创建的数组并使用它,但我只想猜测您想要做什么。

答案 2 :(得分:0)

在这一行

arrayTest2(dataStorage);    

您正在将参数传递给方法,该方法有一个参数“dataStorage”,但您没有声明它。

答案 3 :(得分:-1)

您无法访问其他方法中声明的变量。

要使其有效,您必须这样做:

public class TrialArray
{
    int[][] dataStorage;

    public static void main(String [] args)
    {
        dataStorage = new int[5][5];
        arrayTest();
        arrayTest2(dataStorage);
    }

    public static void arrayTest()
    {

        dataStorage[1][2] = 1;

        System.out.printf("THIS PART WORKS");
    }

    public static void arrayTest2(int[][] dataStorage)
    {
        dataStorage[2][2] = 3;

        System.out.printf("THIS DOESNT");
    }
}