Java 数组和方法的问题

Java 数组和方法的问题,java,Java,当我在方法中为数组赋值时,当我尝试在其他方法中使用它们时,它们将变为0 我对java编程也不是很有经验 这是我的密码: public int[] pVectorCoinOne = new int[2]; public int[] pVectorCoinTwo = new int[2]; public int[] pVectorCoinThree = new int[2]; public int[] pVectorCoinFour = new int[2];

当我在方法中为数组赋值时,当我尝试在其他方法中使用它们时,它们将变为0

我对java编程也不是很有经验

这是我的密码:

    public int[] pVectorCoinOne = new int[2];
    public int[] pVectorCoinTwo = new int[2];
    public int[] pVectorCoinThree = new int[2];
    public int[] pVectorCoinFour = new int[2];
    public int[] pVectorCoinFive = new int[2];
    public int[] pVectorCoinSix = new int[2];


public void setPositionVectors(){

    int[] pVectorCoinOne = {lblCoinImage1.getX(), lblCoinImage1.getY()};
    int[] pVectorCoinTwo = {lblCoinImage2.getX(), lblCoinImage2.getY()};
    int[] pVectorCoinThree = {lblCoinImage3.getX(), lblCoinImage3.getY()};
    int[] pVectorCoinFour = {lblCoinImage4.getX(), lblCoinImage4.getY()};
    int[] pVectorCoinFive = {lblCoinImage5.getX(), lblCoinImage5.getY()};
    int[] pVectorCoinSix = {lblCoinImage6.getX(), lblCoinImage6.getY()};

 }

 public void printAllToOutput(){

    setPositionVectors();

    System.out.println(Arrays.toString(pVectorCoinOne));
    System.out.println(Arrays.toString(pVectorCoinTwo));
    System.out.println(Arrays.toString(pVectorCoinThree));
    System.out.println(Arrays.toString(pVectorCoinFour));
    System.out.println(Arrays.toString(pVectorCoinFive));
    System.out.println(Arrays.toString(pVectorCoinSix));

 }
修正如下:

public void setPositionVectors(){

    pVectorCoinOne[0] = lblCoinImage1.getX(); //example

 }
这一切都是关于范围-局部与全局。不能像这样直接设置数组。在java中,只能在初始化期间将常量设置为数组

比如:

当你写作时

public void setPositionVectors(){

    int[] pVectorCoinOne = {lblCoinImage1.getX(), lblCoinImage1.getY()};
    int[] pVectorCoinTwo = {lblCoinImage2.getX(), lblCoinImage2.getY()};
    int[] pVectorCoinThree = {lblCoinImage3.getX(), lblCoinImage3.getY()};
    int[] pVectorCoinFour = {lblCoinImage4.getX(), lblCoinImage4.getY()};
    int[] pVectorCoinFive = {lblCoinImage5.getX(), lblCoinImage5.getY()};
    int[] pVectorCoinSix = {lblCoinImage6.getX(), lblCoinImage6.getY()};

 }

该方法在其内部使用相同的名称初始化新的局部变量,而不是调用上面声明的局部变量。因此,当方法结束时,变量将消失,并且不会发生任何更改。

这是因为您没有引用现有的字段数组。您正在创建实际包含值的新的本地数组。要正确地为数组赋值,必须执行
pVectorCoinOne[0]=lblCoinImage1.getX();pVectorCoinOne[1]=lblCoinImage1.getY()在方法中。这修复了它。谢谢你把它修好了。非常感谢。
public void setPositionVectors(){

    int[] pVectorCoinOne = {lblCoinImage1.getX(), lblCoinImage1.getY()};
    int[] pVectorCoinTwo = {lblCoinImage2.getX(), lblCoinImage2.getY()};
    int[] pVectorCoinThree = {lblCoinImage3.getX(), lblCoinImage3.getY()};
    int[] pVectorCoinFour = {lblCoinImage4.getX(), lblCoinImage4.getY()};
    int[] pVectorCoinFive = {lblCoinImage5.getX(), lblCoinImage5.getY()};
    int[] pVectorCoinSix = {lblCoinImage6.getX(), lblCoinImage6.getY()};

 }