使用另一个类的数组

时间:2018-02-21 18:28:10

标签: java arrays variables

这看起来很简单,但我找不到一种方法可以在我正在制作的程序中完成这项工作。我有两个类,在其中一个类中,我创建了一个数组,我想在另一个类中访问。

这是主要班级......

public class main {
    public static void main(String[] args) {
    boolean[] pixelValues;
    pixelValues = [99]; 
    }
}

当然,我省略了很多,但这是我遇到问题的代码。第二堂课有点像这样......

public class pixelAssign {
    public pixelAssign(posX, posY) {
         main.pixelValues[ {some number} ] = {some value};
    }
}

我的问题是我无法访问我在主类中创建的pixelValues数组,这是我在第二位代码中创建的函数。我在第二位代码中说错误(1),表示无法找到变量,(2),我错过了标识符(?)。这里的代码有点未完成,但稍后将从主类调用第二位中的函数。

任何帮助都会非常受欢迎!

3 个答案:

答案 0 :(得分:0)

为什么不创建函数以便它接受数组作为参数。然后,您可以从ClassA将数组发送到classB。

这里似乎还有另一个问题。

pixelValues是一个布尔数组还是一些数字(int)?

boolean[] pixelValues;
pixelValues = [99]; 

至于功能:

public pixelAssign(myArray, posX, posY) {
}

因此,在调用该函数时,请使用

pixelAssign(pixelValues, posX, posY)

答案 1 :(得分:0)

也许您已经更改了代码以使其更简洁,但看起来您只是在错误的范围内声明数组。你能改变它吗?

public class main {
    boolean[] pixelValues;

    public static void main(String[] args) {
        pixelValues = [99]; 
    }
}

答案 2 :(得分:0)

Paul'sSANM2009's答案放在一起:

你应该:

public class main {
    static int[] pixelValues;

    public static void main(String[] args) {
        pixelValues = [99];
    }
}

public class pixelAssign {
    public pixelAssign(posX, posY) {
         main.pixelValues[0] = 98;
    }
}

这应该工作IF,只有IF类main和pixelAssign在同一个包中!否则,pixelValues将不可见。

如果您想坚持使用Java Good Practices:

  1. 类的第一个字母始终为大写,因此Main和PixelAssign
  2. 实例化类和使用对象通常是一种很好的做法。否则,您必须使用static
  3. 将pixelValues设置为privateprotected并创建方法:

    public class Main {
        private int[] pixelValues;
    
        public Main() {
            pixelValues = [99];
        }
    
        public void setPixelValue(int position, int value) {
            pixelValues[position] = value;
        }
    
        public static void main(String[] args) {
             Main main = new Main();
             new PixelAssign(main);
        }
    }
    
    public class PixelAssign {
        public PixelAssign(Main main, posX, posY) {
            main.setPixelValue(0, 98);
        }
    }