如何用不同的对象填充二维对象数组? [关闭]

问题描述 投票:0回答:1

我正在尝试使用从 Java 中的一个对象类初始化的不同对象自动填充二维对象数组。每次我打印出数组中每个索引的值时,我总是为每个索引值得到相同的值。每次我想在循环中将对象添加到数组索引时,有没有一种方法可以用新值初始化对象?

这是我的带有构造函数的板类

public class Board {
    private int rows;
    private int columns;
    private int matchSize;
    private Tile[][] boardArray;
    private int[] matchArray;
    Tile tile = new Tile();
    
    Board(){
        rows = 10;
        columns = 10;
        boardArray = new Tile[rows][columns];
        matchArray = new int[15];
    }

这里是用 Tile 对象填充数组的函数

//creates a new board until it can be used
public Tile[][] createBoard() {
    for(int i = 0; i < rows; i++) {
        for(int j = 0; j < columns; j++) {
            boardArray[i][j] = new Tile(i, j);
        }
    }
    
    return boardArray;
}
java arrays multidimensional-array nested-loops
1个回答
0
投票

好吧,如果您的 Tile 对象类正常且像下面的工作代码一样简单,那么我根本看不到任何问题。结论,你的 Tile 类确实有一些偏差。

package game;

public class ApplicationRunner {
    public static void main(String[] args) {
        Board board = new Board();
        Tile[][] createdBoard = board.createBoard();

        System.out.println(board);
    }
}

class Tile {
    public int i;
    public int j;
    Tile() {}
    Tile(int i, int j) {
        this.i = i;
        this.j = j;
    }
    public String toString() {
        return "i:" + this.i + "j:" + this.j;
    }
}

class Board {
    private int rows;
    private int columns;

    private int matchSize;
    private Tile[][] boardArray;
    private int[] matchArray;
    Tile tile = new Tile();

    Board() {
        rows = 10;
        columns = 10;
        boardArray = new Tile[rows][columns];
        matchArray = new int[15];
    }

    public void createBoard() {
        for(int i = 0; i < rows; i++) {
            for(int j = 0; j < columns; j++)
                boardArray[i][j] = new Tile(i, j);
        }
        return boardArray;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();

        for(var row : boardArray) {
            for (Tile tile : row) 
                sb.append(tile);
            sb.append("\n");
        }
        return sb.toString();
    }

}


//board.toString() printed:

//i:0j:0i:0j:1i:0j:2i:0j:3i:0j:4i:0j:5i:0j:6i:0j:7i:0j:8i:0j:9
//i:1j:0i:1j:1i:1j:2i:1j:3i:1j:4i:1j:5i:1j:6i:1j:7i:1j:8i:1j:9
//i:2j:0i:2j:1i:2j:2i:2j:3i:2j:4i:2j:5i:2j:6i:2j:7i:2j:8i:2j:9
//i:3j:0i:3j:1i:3j:2i:3j:3i:3j:4i:3j:5i:3j:6i:3j:7i:3j:8i:3j:9
//i:4j:0i:4j:1i:4j:2i:4j:3i:4j:4i:4j:5i:4j:6i:4j:7i:4j:8i:4j:9
//i:5j:0i:5j:1i:5j:2i:5j:3i:5j:4i:5j:5i:5j:6i:5j:7i:5j:8i:5j:9
//i:6j:0i:6j:1i:6j:2i:6j:3i:6j:4i:6j:5i:6j:6i:6j:7i:6j:8i:6j:9
//i:7j:0i:7j:1i:7j:2i:7j:3i:7j:4i:7j:5i:7j:6i:7j:7i:7j:8i:7j:9
//i:8j:0i:8j:1i:8j:2i:8j:3i:8j:4i:8j:5i:8j:6i:8j:7i:8j:8i:8j:9
//i:9j:0i:9j:1i:9j:2i:9j:3i:9j:4i:9j:5i:9j:6i:9j:7i:9j:8i:9j:9


© www.soinside.com 2019 - 2024. All rights reserved.