使2D数组成为属性,JAVA

时间:2014-06-03 16:44:38

标签: java arrays matrix 2d

我如何支持将2D数组添加到我的属性和构造函数中。我希望有一个对象Sea,它是一个字符串的2D数组和一个采用x和y坐标的构造函数。但我在哪里初始化数组。在构造函数中还是在它之外?

package battleship;

public class Sea {

//declare properties
private int width;
private int lenght;
private String[][] field = new String[getLenght()][getWidth()];

public int getWidth() {
    return width;
}
public int getLenght() {
    return lenght;
} 
public String[][] getField() {
    return field;
}


//create constructor
public Sea(int width, int length){
    this.width = width;
    this.lenght = length;
    field =  new String[length][width];
}

//creates a method that visualizes the field with the ships
String[][] toStringWithShips(){
    for(int col = 0; col < this.getLenght(); col++){
        for(int row = 0; row < this.getWidth(); row++){
            field[col][row] = ".";
        }
    }
    return field;
}
}

5 个答案:

答案 0 :(得分:2)

在构造函数外声明数组,在构造函数

中初始化它
...
String[][] field;

...
public Sea(int width, int length){
    field = new String[width][length];
     ...
}
...

答案 1 :(得分:1)

方法1: 如果它有预定义的值,它可以在构造函数中填充,或者如果需要直接使用用户输入,请使用这些值调用toStringWithShips()。另外,创建一个getter方法以通过任何其他方法获取2D数组。

方法2: 创建Setter方法以填充2D数组的值。创建一个getter方法来检索这些值。

答案 2 :(得分:0)

如果在ctor中给出了x和y值,那么你可以在那里初始化数组,但我认为它会在你的app上出现,如果阵列肯定会被使用并且你从初始构造中获益,那么我会推荐在ctor中进行初始化,如果它的情况如此,我会考虑在getter中使用动态init

答案 3 :(得分:0)

始终应该通过构造函数本身初始化对象创建,因此最好为此目的使用构造函数

答案 4 :(得分:0)

如果我的问题是正确的,你也可以创建另一个构造函数,它是一个2-D字符串数组,如下所示: -

public Sea(String [][] field){
   this.field = field
}

但你也可以对你真正想要实现的目标给出更多解释