Я думаю, что это мой вопрос? В принципе, этот код не будет работать независимо от того, сколько способов я его пробую. Состояние не будет задано для данного массива.Можно ли инициализировать массив с помощью условных выражений?
if(difficulty == "easy") {
state= new int[] {1,3,4,8,6,2,7,0,5};
blankTile = 7;
Node start = new Node(difficulty,state,blankTile);
openList.add(start);
}
else if(difficulty == "medium") {
state= new int[] {2,8,1,0,4,3,7,6,5};
blankTile = 3;
Node start = new Node(difficulty,state,blankTile);
openList.add(start);
}
else if(difficulty == "hard") {
state= new int[] {2,8,1,4,6,3,0,7,5};
blankTile = 6;
Node start = new Node(difficulty,state,blankTile);
openList.add(start);
}
else if(difficulty == "worst"){
state= new int[] {5,6,7,4,0,8,3,2,1};
blankTile = 4;
Node start = new Node(difficulty,state,blankTile);
openList.add(start);
}
Я имел в конструктор узла на первый, где я бы просто передать в затруднении, и было бы установить состояние и blankTile в конструкторе. но это тоже не работало. Кто-нибудь будет любезен, чтобы помочь мне?
Возможно, мне что-то не хватает, но не следует заявлять и начинать объявляться вне операторов if? Вы можете инициализировать их после факта внутри операторов if, но вы теряете область действия, если вы больше не находитесь в операторах if. –
Так что состояние объявлено снаружи, я просто не показывал его здесь. Начать не было, но после исправления его в моем коде он все равно ничего не меняет. Когда я перехожу к состоянию печати, чтобы проверить, правильно ли он назначен, я получаю нулевой указатель. – DeadApe
Возможный дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – yshavit