0

如何使数组在整个类和方法中都可以访问?现在我有类似的东西

public class Class
{
public int[] array = new int[value];
public static int var;
    public void callArray()
    {            
        for(int x = 0; x < array.length; x++)
            var++;
        for(int x = 0; x < array.length; x++)
        {
            value[x] = var;
            var = 0;
        }
    }

    public void anotherMethod()
    {
    int[] array = new int[var];
         for(int x = 0; x < array.length; x++)
             System.out.println(array[x])
    }
}  
public class AnotherClass extends Class
{
int[] array = new int[var];
    for(int x = 0; x < array.length; x++)
        System.out.println(array[x]);
}

每次我做这样的事情时,我都会得到一个空指针或数组越界我怎样才能使数组在多个类和方法中可用?

4

3 回答 3

3

假设array是类的成员(实例变量) - 你应该使用它,而不是创建一个新的局部变量

 int[] array = new int[value];

正在创建一个新的局部变量,并在其上“工作”,而不是在实例变量上工作。

你真正需要的是:

public void callArray() {
    array = new int[value];
    //^^ note that we do not declare a new variable, and thus we use the instance variable

    for(int x = 0; x < array.length; x++)
        //code
}
于 2012-11-25T05:46:02.450 回答
2

您需要使数组成为字段:

class MyClass {
    int[] array = new int[5];

    public void callArray()
    {
        for(int x = 0; x < array.length; x++)
            //code
    }

    public void anotherMethod()
    {
         for(int x = 0; x < array.length; x++)
             System.out.println(array[x])
    }
于 2012-11-25T05:45:42.210 回答
0

如果您需要从许多不同的类实例对您的数组进行进程范围的访问,您可以将它包装在单例类中。如果您只需要在实现“callArray”和“anotherMethod”方法的一个对象中访问数组,您可以简单地将数组声明为类字段:

public YourClass {
    private int[] array = new int[value];

    public void callArray()
    {
        for(int x = 0; x < array.length; x++)
            //code
    }

    public void anotherMethod()
    {
       for(int x = 0; x < array.length; x++)
          System.out.println(array[x])
    }
}
于 2012-11-25T05:56:34.187 回答