我如何支持将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;
}
}
答案 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
}
但你也可以对你真正想要实现的目标给出更多解释