2013-03-31 2 views
1

Я работаю над проектом для школы, где у меня есть много вложенных циклов в методе. Я могу проверить, что мой код достигает «return true»; перед возвратом false; используя слишком много утверждений System.out.println.Java Return not exiting method (loop)

Есть ли случаи, когда возврат не сразу выходит из метода. В моем коде он достигает «return true;», но затем продолжает работать через метод.

Спасибо - первый пост, но долгое время студент из других вопросов

EDIT: Показывать мой код - это для проекта UC Беркли, чтобы они не позволяют нам размещать наш полный код. Вот важные части.

В моем коде нет «заявлений о попытках». Это самый конец моего метода, который имеет тонну циклов (в то время как & for).

if (x == 7 && turn == 5){ 
        System.out.println("TRUE RESULT"); 
        return true; 


       } 

       nextVictory(turn, x, y, color,z); 
       alive = false; 
      } 

     } 


      } 
    } 
    System.out.println("FALSE RESULT"); 
    return false; 
} 

У меня есть заявление на печать, чтобы проверить, где я нахожусь. Вот результаты:

ИСТИНА РЕЗУЛЬТАТ

FALSE РЕЗУЛЬТАТ

FALSE РЕЗУЛЬТАТ

FALSE РЕЗУЛЬТАТ

FALSE РЕЗУЛЬТАТ

+6

Показать Ваш код. – Patashu

+0

Либо используйте 'try' с блоком' finally', либо задайте логическое значение, и верните его, когда закончите. – Clark

ответ

3

Есть ли случай, когда возврат не сразу выйти из метода?

Единственный случай, который приходит на ум, если return заявление было внутри try - блок finally. Блок finally все равно будет выполнен.

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

0

Если ваш код достигает линии return true, он должен выйти из метода. Таким образом, он не достигает линии. Что-то происходит между System.out.println и оператором return. Это поможет, если вы покажете код.

+0

Обновлено кодом – Marcus