Java 数组中的值未正确更改

Java 数组中的值未正确更改,java,arrays,Java,Arrays,在我的一个名为Board的类中,我有以下方法。板上有120个正方形的数组,这是我程序中的另一个类 public class Board{ private Square[] square = new Square[120]; ... 每个正方形有一个int行和一个int列 public class Square extends JButton{ public int row; public int column; ... 该方法本身应该计算出内部每个正方形的行和列 void setS

在我的一个名为Board的类中,我有以下方法。板上有120个正方形的数组,这是我程序中的另一个类

public class Board{

private Square[] square = new Square[120];
...
每个正方形有一个int行和一个int列

public class Square extends JButton{
public int row;
public int column;
...
该方法本身应该计算出内部每个正方形的行和列

    void setSquares() {
    int ones;
    int tenths;
    Square s = new Square();
    Insets squareMargin = new Insets(5, 5, 5, 5);
    s.setMargin(squareMargin);
    for (int i = 0; i < square.length; i++){

        ones = getNdigit(i, 1);
        tenths = getNdigit(i, 2);

        //set row && set column
        if ((tenths >= 2 && tenths <= 9) && (ones >= 1 && ones <= 8)){
            s.row = tenths - 1;
            s.column = ones;

        } else{
            s.row = 0;
            s.column = 0;
        }
        square[i] = s;
        System.out.println(square[0].toString());

    }
void setSquares(){
整数;
十分之一整数;
正方形s=新正方形();
插图squareMargin=新插图(5,5,5,5);
s、 设置边距(平方边距);
对于(int i=0;i如果((十分之一>=2&&十分之一=1&&ones您只创建了一个
Square
的实例,并在整个for循环中使用它。请将实例化移动到for循环中,以便存储的每个实例都不同

在评论中回答您的问题:

Square s = new Square();
在内存中分配一些空间来存储
Square
实例(您可以在其中为其成员设置值)。因此,现在
s
在内存中引用该空间

square[i] = s;

因此,现在
square[i]
引用相同的空间(因此具有相同的成员值)。因此,对于每个
i
所有
square[i]
引用相同的位置(相同的
square
),但是如果每次迭代分配
s
一个,那么
s
将引用一个新的正方形和每个
正方形[i] 
将引用不同的
Square
实例

1.您忘记问问题。2.什么值没有正确更改?提供示例输入和输出(预期和实际接收)int和columns的值都没有正确更改,我的问题是为什么。我在最后一段中提供了示例数据。这就是我所需要做的。我很惊讶。你介意我问一下为什么会发生这种情况吗?s的值在每个循环中都会更改,为什么平方[I]用它来改变吗?这很有道理。我已经用头撞墙好几个小时了,而你却像一剂维柯丁一样进来了。我真是太感激了。
square[i] = s;