#java #object #multidimensional-array
#java #объект #многомерный массив
Вопрос:
У меня есть 2D массив в классе Board для размещения объектов типа Ship. Конструктор класса Board инициирует 2D массив с объектами ship, однако он по-прежнему остается нулевым, когда я его проверяю.
public class Ship{
private int tons; // 1 element in 2d array
public Ship(){
this.tons=1;
}
public Ship(int t){
this.tons=t;
}
public int getTons(){
return this.tons;
}
public void setTons(){
this.tons = 1;
}
}
import java.util.Random;
public class Board{
private Ship battleShip[][];
private Random rnd=new Random();
public Board(){
//setup board with null values
Ship battleShip[][] = new Ship[5][5];
// initialize
for (int r=0; r < 5; r )
for (int c=0; c < 5; c )
battleShip[r][c]= new Ship();
}
}
Ответ №1:
Вы объявили одну дополнительную переменную battleShip
в конструкторе. используйте переменную-член класса, которую вы уже определили в class .
private Ship battleShip[][];//<------------- use this
Конструктор должен быть изменен на это
public Board(){
//setup board with null values
battleShip = new Ship[5][5]; //<---------- now member variable is initialed
// initialize
for (int r=0; r < 5; r )
for (int c=0; c < 5; c )
battleShip[r][c]= new Ship();
}
Ответ №2:
выполнение этого:
public Board(){
//setup board with null values
Ship battleShip[][] = new Ship[5][5];
затеняет член класса battleShip
и сохраняется как неинициализированное поле в классе