Как поместить оператор if, else в оператор for - PullRequest
0 голосов
/ 04 марта 2012

Как поместить оператор if...else в оператор for?

Это код:

// This is within a actionListener. When ever I press a button, this happens.
for (int i = 0; i < booleanVariable.length; i++) {
    //length is 8
    System.out.println("booleanVariable is" + booelanVariable[i]);
    if (booleanVariable[i] = true) {
        booleanVariable[i] = false;
        System.out.println("booleanVariable was true")
        break;
    } else {
        System.out.println(" booleanVariable is false");
    }
}

Это выход за 3 нажатия:

booleanVariable is true
booleanVariable was true
//correct    


booleanVariable is false
booleanVariable was true
//incorrect.    

booleanVariable is false
booleanVariable was true
//incorrect

Это означает, что по какой-то причине, даже если booleanVariable имеет значение false, вывод говорит, что это правда, что ложно.

Что я нашел:

  • Без оператора break; программа обходит все 8 раз и выводит точно так же, как и без break, только неправильные значения еще 5 раз.

Что я пробовал:

  • Изменение if с true на false (из отчаяния)
  • Если в течение некоторого времени в течение
  • еще, если
  • корпус переключателя

Обычно я просто использовал бы переключатель, но я использую логические значения, а логические значения не работают - это переключатели.

Если кто-то знает ответ, я буду вечно благодарен. Спасибо.

Ответы [ 6 ]

5 голосов
/ 04 марта 2012

Измени свой

if (booleanVariable[i] = true) {

до

if (booleanVariable[i] == true) {

Для сравнения необходимо использовать оператор ==. Один = устанавливает значение true, которое всегда возвращает true. Вы также можете изменить его на

if (booleanVariable[i]) {
5 голосов
/ 04 марта 2012

Ваша проблема может быть в этой строке:

if (booleanVariable[i] = true) {

Для логических сравнений следует использовать ==, если только вы не собираетесь установить значение true. В любом случае эта строка всегда будет иметь значение true.

Обратите внимание, что вам никогда не нужно сравнивать с true, вы можете просто сказать что-то вроде:

if (booleanVariable[i]) {

, поскольку, если значение равно true, блок кода будет введен, а если значение равно false, он перейдет к другому случаю.

4 голосов
/ 04 марта 2012

Вы должны использовать == для сравнения значений.Ю. используйте =, который присваивает значение true переменной, поэтому оно всегда будет истинным

3 голосов
/ 04 марта 2012

В операторе if есть ошибка -

Вы присваиваете переменной true, поэтому она выводит true каждый раз. должно быть == (равно), а не = (назначить).

2 голосов
/ 04 марта 2012

Вы должны изменить if (booleanVariable [i] = true), как будто (booleanVariable [i] == true).нужно '==' вместо '='.

2 голосов
/ 04 марта 2012

if (booleanVariable[i]) вместо if (booleanVariable[i] = true) .... = является оператором присваивания ... вы также можете использовать == вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...