Для цикла переключите логическое значение - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь сделать цикл for и переключать в каждом цикле логическое значение.
Во-первых, я создал массив 100 шкафчиков, в которых все закрыты.
Затем в первомцикл, я хочу открыть все шкафчики, затем изменить состояние каждого второго шкафчика (2,4,6 ... и т. д.) и так далее, пока в конце он только не изменит состояние 100th шкафчик.

Таким образом, если значение false (заблокировано), оно должно измениться на true, а если значение true (открыть), наоборот.Проблема в том, что я не совсем уверен, как изменить состояние, я жду вашей помощи.

Пожалуйста, предложите любое решение

    public static void main(String[] args) {
    boolean[] lockers = new boolean[101];
    for (int i = 1; i < lockers.length; i++) {
        lockers[i] = false; 
        }
    for (int i = 1; i < lockers.length; i++) {
        lockers[i+i] = lockers[i+i] == true ? false : true;
        if(lockers[i] == true)
            System.out.print("o"); //open
        if(lockers[i] == false) {
            System.out.print("c"); //closed
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 25 января 2019
boolean[] lockers = new boolean[100]; // All are false
boolean be = false;
for (int i = 0; i < lockers.length; i++) {
    be = !be;
    lockers[i] = be;
    if (lockers[i]) {// Or if (be)
        System.out.print("o"); // open
    } else {
        System.out.print("c"); // closed
    }
}
System.out.println(); // Write the line out on the console.

Instead:      Use:
c == true     c
c == false    !c         (Not operator !)

Затем возникают некоторые проблемы с индексами массива: new boolean[100] доставляет 100 логических значений со значением false, с индексами 0 .. 99.

0 голосов
/ 25 января 2019
public static void main(String[] args) {
    boolean[] lockers = new boolean[100];
    for (int i = 0; i < lockers.length; i++) {
        lockers[i] = false; 
        }
    for (int i = 1; i % 2 == 0 && i < lockers.length; i++) {
        lockers[i] = true;
    }
}

или

public static void main(String[] args) {
    boolean[] lockers = new boolean[100];
    for (int i = 0; i < lockers.length; i++) {
        lockers[i] = false; 
        }
    for (int i = 0; i < lockers.length; i=i+2) {
        lockers[i] = true;
    }
}

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

public static void main(String[] args) {
    boolean[] lockers = new boolean[100];
    for (int i = 0; i < lockers.length; i++) {
        lockers[i] = false; 
        }
    for (int i = 0; i < lockers.length; i=i+2) {
        lockers[i] = !lockers[i]
    }
}
...