2015-12-14 2 views
-3

Хотя я знаю, как работают/операторы и операторы работают (есть много сообщений об этом), я, похоже, потерялся в этом блоке кода в частности. Мне дали окончательный результат (если еще, если), однако я не смог прийти к такому выводу, просто взглянув на него и работая над ним на бумаге. Я бы очень признателен за разъяснение в том, что происходит в коде.Что печатается, когда выполняется следующий метод myProgram() в классе SimpleIsland?

public class SimpleIsland 
{ 
    public boolean getTrue() 
    { 
     return true; 
    } 
    public boolean getFalse() 
    { 
     return false; 
    } 
    public static void myProgram() 
    { 
     if (getFalse() || getTrue()) 
     { 
      if (!getTrue()) 
      { 
       if (!getFalse()) 
       { 
        System.out.println("if if if"); 
       } 
       else 
       { 
        System.out.println("if if else"); 
       } 
      } 
      else 
      { 
       if (!getFalse()) 
       { 
        System.out.println("if else if"); 
       } 
       else 
       { 
        System.out.println("if else else"); 
       } 
      } 
     else 
     { 
      System.out.println("else"); 
     } 
    } 
} 

ответ

0

Замените эти функции и значения значениями true и false, и все станет понятнее. И, пожалуйста, никогда не пишите такой код. Это загнает вас и всех, кто должен поддерживать это безумие.

public class SimpleIsland 
{ 
    public boolean getTrue() 
    { 
     return true; 
    } 
    public boolean getFalse() 
    { 
     return false; 
    } 
    public static void myProgram() 
    { 
     if (false || true) 
     { 
      if (false) 
      { 
       if (true) 
       { 
        System.out.println("if if if"); 
       } 
       else 
       { 
        System.out.println("if if else"); 
       } 
      } 
      else 
      { 
       if (true) 
       { 
        System.out.println("if else if"); 
       } 
       else 
       { 
        System.out.println("if else else"); 
       } 
      } 
     else 
     { 
      System.out.println("else"); 
     } 
    } 
} 
+0

Большое вам спасибо! Я это очень ценю. И это практический вопрос, заданный нам для подготовки к заключительному экзамену завтра, поэтому я думаю, что профессор намеревался свести нас с ума, написав такой код: / –

0

Он будет печатать 'if else if'. Первый if (getFalse() || getTrue()) вернет true, так как мы проверяем условие OR. Поэтому после ввода первого, если следующий вложенный if (! GetTrue()) вернет false, и, следовательно, управление переместится в другое условие. Следующий вложенный if (! GetFalse()) внутри else будет оцениваться как true, таким образом, печать «if else if»

+0

спасибо. Вы объяснили это очень четко. Я ценю это! –

Смежные вопросы