2016-03-23 2 views
2

Я все еще новичок в кодировании, поэтому, пожалуйста, несите меня. моя программа всегда проверяет, что происходит в инструкции if, и не переходит в оператор else-if, даже значение false. Итак, почему это происходит? Любая помощь будет принята с благодарностью.моя программа не проверяет оператор else-if

for (int i = 0; i <= time; i++) { System.out.println("Clock loop = " + i); 

     for (int j = 0; j < cashierArr.length; j++) { 
      System.out.println("CashierArr at " + j + " is busy? " 
        + cashierArr[j].busy); 
      System.out.println(j); 

      if (cashierArr[j].busy = true) { 

       cashierArr[j].serveTime -= 1; 
       System.out.println("Serve time = " 
         + cashierArr[j].serveTime); 
       System.out.println("In busy"); 

      } else if (cashierArr[j].busy = false) { 


       Customer tempCust = (Customer) queue.poll(); 


       cashierArr[j].serveTime = tempCust.serviceTime; 
       System.out 
         .println("serveTime = " + cashierArr[j].serveTime); 
       cashierArr[j].busy = true; 

       System.out.println("In not busy"); 
      } 

     } 
+1

если (cashierArr [J] .busy = истина) должен быть справедливым, если (cashierArr [J] .busy) и для (cashierArr [J] .busy = false) try (! cashierArr [j] .busy) – Maantje

+1

вам нужно добавить '==' (double) не '=' (single) в if и if else condition. Во-вторых, если занято булевым типом, не нужно проверять равенство. –

ответ

5

пожалуйста, сделайте следующее,

if (cashierArr[j].busy == true) { // == is comparison operator, while = is assign 

вы использовали только одно назначение, которое фактически присвоит значение истина означает, что всегда остается истинной

if (cashierArr[j].busy = true) 
+4

или просто 'if (cashierArr [j] .busy)' – Reimeus

+1

ohhh вот почему. Спасибо за объяснение. – john

0

Это базовая синта х проблема изменения

присваивает значение истинно и ложно cashierArr [J] .busy

if (cashierArr[j].busy = true) в if (cashierArr[j].busy == true)

и

else if (cashierArr[j].busy = false) в else if (cashierArr[j].busy == false)

Предположим, что ваш код может использовать Boolean for busy field, и вы не хотите ничего делать в случае null.

0

, когда вы делаете это:

if (cashierArr[j].busy = true) { 

вы присваиваете переменной к истинным, а не проверять значения в там ...

и так как вы проверяете булевы он это достаточно написать:

if (cashierArr[j].busy) { 
1
1) if(cashierArr[j].busy = true) 

2) else if (cashierArr[j].busy = false) 

В заявлении выше вы будете использовать оператор присваивания (=)not (==) Операторы сравнения.

= Operator является использование для Назначают значения не сравнения, так что это на самом деле присвоить значение

к true означает, что она всегда приводит к true так что ваши не else statement никогда добирается, чтобы быть когда-либо выполнить.

изменения == в обоих заявлении

1) if(cashierArr[j].busy == true) 

2) else if (cashierArr[j].busy == false) 
+0

приятный информация. –

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