Инициализация проблемы - PullRequest
0 голосов
/ 23 мая 2018
private void northroom()
{
    char choice2;
    boolean boolean_1 = false;
    String answer2;
    System.out.println("You press a panel next to the door");
    System.out.println("The panel lights up with a pinging sound");
    System.out.println("The door slowly scrapes open");
    System.out.println("You are now in North Room");
    System.out.println("There is a object in the coner of the room shoraded by darkness");
    do
    {
        System.out.println("Would you like to pick up object Yes(Y) or No(N)");
        while(boolean_1 == false)
        {

            answer2 = keyboard.next();
            choice2 = answer2.charAt(0);
            if(choice2 == 'Y')
            {
                System.out.println("You go pick up the object");
            }
            if(choice2 == 'N')
            {
                    System.out.println("Stare at object because you are useless");
                    System.out.println("Try again");
            }
        }
    } 
    while (**choice2** != 'Y' && **choice2** != 'N');

while ( choice2 ! = 'Y' && choice2 ! = 'N');

Здесь оба выбора2 инициализируются как мнеисправьте это так, чтобы оно зацикливалось правильно

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Анализатор пути кода компилятора не идет достаточно далеко, чтобы признать, что цикл while(boolean_1 == false) всегда будет выполняться хотя бы один раз.

Что касается компилятора, тело цикла может быть пропущено, в этом случае переменная choice2 не присваивается, т. е. точно не назначено .

Это можно исправить, инициализировав ее фиктивным значением, например

char choice2 = ' ';

Конечно, если бы компилятор выполнил расширенный анализ, он обнаружил бы, что цикл while(boolean_1 == false) работает вечно, поскольку boolean_1 никогда не обновляется, и генерировал бы ошибку компиляции, говорящую, что while (choice2 != 'Y' && choice2 != 'N'); является недостижимым .

0 голосов
/ 23 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...