Reputation: 47
When I'm assigning values to arrays in methods, they become 0 when I try to work with them in other methods.
I'm also not that experienced with programming in java.
Here is my code:
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));
}
Upvotes: 1
Views: 63
Reputation: 398
Fix like this:
public void setPositionVectors(){
pVectorCoinOne[0] = lblCoinImage1.getX(); //example
}
It is all about scope - local vs global. And you cannot set the array directly like this. In java, you can set constants to array only during initialization.
like:
public int[] array = {1, 2};
When you write
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()};
}
the method initializes new local variables with the same names inside its own rather than calling the ones you declared above. So the variables will disappear when the method ends, and nothing will be changed.
Upvotes: 3