对于循环,切换布尔值

时间:2019-01-25 10:53:20

标签: java for-loop boolean

我正在尝试创建一个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 :(得分:1)

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。

答案 1 :(得分:0)

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]
    }
}