2015-12-12 2 views
0

Я создаю интерактивную историю на Java. Я использую Netbeans и Jswing для выполнения всего графического интерфейса. У меня есть проблема, когда вложенности другой, если заявление внутри него не допускает параметр ...Как заставить мой код работать с вложенными операторами if

if("Open Locker".equalsIgnoreCase(input)) { 
    jLabel2.setText("You open your locker and tap your textbooks and they appear in your inventory. The warning bell rings."); 
    jLabel3.setText("You remember your next class is World History..."); 

    if("Go to World History".equalsIgnoreCase(input)) { 
      jLabel2.setText("You walk down the hallway realizing that you still have 45 minutes until"); 
      jLabel3.setText("class starts. You arrive in class and sit in your desk."); 
    } 
} 
else { 
    jLabel3.setText("You cannot do that right now."); 
} 

Code Output

Я могу напечатать в открытом шкафчике и он работает, но когда я печатаю перейти к мировой истории он не работает, он говорит, что вы не можете сделать это прямо сейчас ...

ответ

0

Вам необходимо отслеживать последний вход. Давайте переменную isLockedOpened, чтобы сделать это

boolean isLockedOpened=false; 

Теперь, если шкафчик открыт набор isLockedOpened = верно. В следующий раз, когда пользователь вводит «Перейти к всемирной истории», тогда проверьте ввод и переменную isLockedOpened. Ваш код выглядит примерно так:

if("Open Locker".equalsIgnoreCase(input)) { 
    //set locker opened 
    isLockedOpened=true; 
    jLabel2.setText("You open your locker and tap your textbooks and they appear in your inventory. The warning bell rings."); 
    jLabel3.setText("You remember your next class is World History..."); 
}else if("Go to World History".equalsIgnoreCase(input) && isLockedOpened=true) { 
      jLabel2.setText("You walk down the hallway realizing that you still have 45 minutes until"); 
      jLabel3.setText("class starts. You arrive in class and sit in your desk."); 
} 
else { 
    jLabel3.setText("You cannot do that right now."); 
    //isLockedOpened=false;//you can set this to true or false but understand what will happen in both case. 
} 

Надеюсь, это даст вам небольшой намек !!!

+0

Я думаю, что OP хочет вложенный 'if', посмотрите на заголовок вопроса. Вы также можете прочитать текст, и это имеет смысл. – user1803551

+0

По какой-то причине он не позволит isLockedOpen быть повернутым к true в утверждении if, поэтому он говорит, что я не могу пойти в историю мира ... В противном случае он отлично работает и благодарит вас – LcheesyD

0

Я могу набрать открытый шкафчик, и он работает, но когда я печатаю историю, это не работает, он говорит, что вы не можете сделать это прямо сейчас

Это происходит потому, что ваш input не был изменен. Для того, чтобы попасть в первый вариант вам нужно ввести Open Locker, то для второго нужно ввести Go to World History, но вы уже набрали что-то.

Что вам нужно сделать, это попросить другой вход после вы идете в первый if заявление:

if("Open Locker".equalsIgnoreCase(input)) { 
    jLabel2.setText("You open your locker and tap your textbooks and they appear in your inventory. The warning bell rings."); 
    jLabel3.setText("You remember your next class is World History..."); 

    //ask for input 

    if("Go to World History".equalsIgnoreCase(input)) { 
      jLabel2.setText("You walk down the hallway realizing that you still have 45 minutes until"); 
      jLabel3.setText("class starts. You arrive in class and sit in your desk."); 
    } 
}