У меня есть код с этим набором переменных, которые инициализируются внутри одного конструктора, но мне нужно инициализировать эти переменные внутри другого конструктора, у которого нет этих параметров в предыдущем. вот как выглядит код
public class BigCity {
private char[][] grid;
private int numBoxes;
private int numCheese;
private int[][] cheesePos;
private int countMove;
private int countCrumb;
private boolean stillLoose;
public BigCity(int rows, int cols ,int numBoxes, int numCheese, int[][] cheesePositions){
//initializing the grid
grid = new char[rows][cols];
this.numBoxes= numBoxes;
cheesePos= cheesePositions;
//initializing the cheese Positions (they are coordinates so columns are never more than two)
cheesePositions= new int[numCheese][2];
countMove =0;
countCrumb=0;
this.numCheese= numCheese;
//calling fillGrid method
fillGrid();
}
//test phase 2
public BigCity(String fileName) {
// this();
}
Вы можете инициализировать второй конструктор со значениями по умолчанию, но значения по умолчанию можно установить в объявлениях (часто хорошая идея). Если вы не хотите использовать значения по умолчанию, вам нужно каким-то образом сообщить значения. Если вы не хотите использовать значения по умолчанию, вам следует уточнить свой вопрос.
Посмотрите на блок Initializer — общий код для всех конструкторов класса — выполняется перед каждым отдельным конструктором, и поэтому каждый конструктор затем выполняет пользовательскую инициализацию. Синтаксически это пустой
{...}
: docs.oracle.com/javase/tutorial/java/javaOO/initial.html