2014-10-13 3 views
0

Я пишу программу Java для имитации алгоритма A *, и мне нужно передать функции a() два параметра: initial state и goal state. Однако, чтобы убедиться, что у меня есть правильное состояние цели, я проверяю, является ли эвристическое значение равным 0. Если это так, я отмечаю boolean goal == true еще. Я отмечаю его ложным.Java - инициализировать переменную при условии

Мне было интересно, есть ли способ инициализировать переменную State goal для этого состояния цели, проверяя его логическое значение?

for(int i = 0; i < states.size(); i++) 
    states.get(i).isGoal(); 

states является HashMap состояний для алгоритма, и isGoal() представляет собой метод, который устанавливает логический флаг каждого государства, в зависимости от его эвристической ценности.

+0

Не удался undertand вашей проблемы, но внутри вас может инициализировать объект любого типа вы хотите: для (INT I = 0; я

+0

Для каждого состояния в моем HashMap состояние имеет логическое значение с именем 'goal'. В вышеперечисленном 'for loop' я устанавливаю каждый флаг состояний как true, так и false. Мне было интересно, могу ли я инициализировать переменные на основе значений этих флагов. – Delfino

ответ

0

Я думаю, что вы хотите что-то вроде этого:

for(int i = 0; i < states.size(); i++) { 
     if(map.get(i).isGoal()){ 
      //instantiate wherever you want if goal is true 
      map.get(i).setGoal(); 
     } else { 
      //instantiate wherever you want if goal is false 
     } 
    } 
0

Имейте isGoal() возвратите логическое значение и установите State goal после проверки флага isGoal. т.е.

for(int i = 0; i < states.size(); i++) 
    if(map.get(i).isGoal()){ 
     map.get(i).setGoal(); 
    } 
Смежные вопросы