2013-02-15 4 views
2

Код ниже Я беру в двух массивах и сравниваю их. Когда все одинаково, я получаю правильное отображение сообщений, но когда оно ложно, отображаются оба сообщения. Самый последний оператор if для отображения System.out.println («идентичный»); всегда отображается, даже если логическое значение false. Почему это????Булево заявление не работает?

public static void compareArrays(int[] a, int[] n){ 

    boolean b = false; 
    for (int i = 0; i < n.length; i++) { 
    if (n[i] == a[i]) { 
     b = true; 
    } else { 
     b = false; 
     System.out.println("different"); 
     break; 
    } 
    } 

    if (b = true){ 
    System.out.println("identical"); 
    } 
} 
+0

+1 чтобы противостоять нисходящей линии, так как я не думаю, что это заслужено. Очевидно, что спрошено, и я не уверен, что бы я искал, чтобы найти ответ на эту проблему как неопытный программист. – Medo42

+0

@ Medo42 Спасибо – user2052514

+2

-1. Это очень запутанно, что вы значительно изменили вопрос. Скорее дайте ошибку в вопросе и отметьте ответ как принятый. Исправьте ошибку в вашей IDE, хотя;) – jlordo

ответ

4

= является оператором присваивания. == - оператор равенства.

if (b = true){ 

должен быть

if (b ==true){ 

или b является булево просто:

if(b) { 
12

Изменить это:

if (b = true){ 
    System.out.println("identical"); 
} 

к:

if (b == true){ 
    System.out.println("identical"); 
} 

или лучше

if (b){ 
    System.out.println("identical"); 
} 

Вы присваиваете значение вместо сравнения.

+1

+1 Для раздела «или лучше». – NominSim

1

Ну, вы не сравниваете b с истинным, а установите перед выполнением оператора if.

Измените оператор if на if(b == true) или просто if(b).

+0

Cheers So Simply – user2052514

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