2016-11-10 13 views
-3

В Java if должен иметь {}, за исключением случаев, когда существует только одна строка под if.Почему мой Java-код работает?

Но тогда почему на моем компьютере может работать следующий код?

int x=1; 
int y=1; 


     if(x<=4) 
      if(y>=4) 
       System.out.println("%%%"); 
      else 
       System.out.println("+++"); 
      System.out.println("***"); 

Вот как это выглядит на моем IDE:

И все работает хорошо. Вот результат (при его загрузке других ресурсов, не заботятся об этом. Я только изменил некоторые из моего кода, чтобы попробовать код как можно скорее.)

+1

'System.out.println (" *** ");' выполняется каждый раз, это не в операторе 'if' или' else'. Это просто плохо предназначено, должно быть на том же уровне, что и первый «если». – Adam

+0

Неправильная линия. один исполняемый блок кода –

+0

Просьба указать источник, в котором указано это правило (чтобы мы могли сказать, насколько это неправильно) – ortis

ответ

-3

Это ваш код

if(x<=4) 
    if(y>=4) 
     System.out.println("%%%"); 
    else 
     System.out.println("+++"); 
    System.out.println("***"); 

это то, что Java считает если (Boolean) перейти к следующей строке если (Boolean) хорошо это неверно, перейдите к еще е

3

Java будет ассоциировать else к LA кандидат if. Ваш код (со скобами) равна

if(x<=4) { 
    if(y>=4) { 
     System.out.println("%%%"); 
    } else { 
     System.out.println("+++"); 
    } 
} 
System.out.println("***"); 

Кандидат if подобран, когда есть ровно 1 утверждение (окончание с запятой) или блок между if и else.

+0

также, что java выполняет одно утверждение, следующее if или else. а не всей линией. Потому что в java вы можете писать несколько операторов в одной строке. если еще работает, как работают фигурные скобки. если u открыть другую скобу, не закрывая предыдущую скобу. любая новая закрывающая скобка рассматривается для самой последней открытой фигурной скобки. – Acewin

0

Благодарим вас за решение проблемы.

Дело в том, if выполнить следующее заявление или блок. Java рассматривает следующий код в целом.

`if(y>=4) 
    System.out.println("%%%"); 
else 
    System.out.println("+++");` 

И это следует за первым if.

Последний отпечаток не входит в сферу рассмотрения, это просто вызвано плохим отступом.

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