如何为字符串“ Open”和“ Close”分配布尔值true或false

时间:2018-10-17 18:07:56

标签: java

所以我有这段代码,但是我无法弄清楚以下内容:

  1. 为什么输出在99处停止?我知道我设置了boolean [100]并将其更改为101,但这没有用。

  2. 如何获取输出以打印“ Locker x is open”或“ Locker x is closed”?我知道我必须以某种方式将布尔true分配给打开,将false分配给关闭。

请帮助谢谢!

代码

public class lockerPuzzle{

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

        for(int i = 1; i <lockers.length; i++){
            System.out.println(lockers[i] + " " + i);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

为什么输出停止在99?

您应该从索引1开始,而应该从索引0开始。

差异

1-99(99个元素)

0-99(100个元素)

代码

float alpha = texture2D(text, TexCoords).a;
gl_FragColor = vec4(1.0, 1.0, 1.0, alpha) * color; 

如何获取输出以打印Locker x是打开还是关闭?

您可以检查布尔值的真值并根据其值打印一些文本:

public static void main(String[] args){
    boolean[] lockers = new boolean[100];
    for(int i = 0; i < lockers.length; i++){
        for (int j = i; j < lockers.length; j+=i){
            if (lockers[j] == false){
                lockers[j] = true;
            }
            else{
                lockers[j] = false;
            }
        }
    }
    for(int i = 0; i <lockers.length; i++){
        System.out.println(lockers[i] + " " + i);
    }
}

注意:使用更多变量或三元运算符可以使此操作更为简洁,但这对于新程序员来说确实如此。祝你好运。

答案 1 :(得分:0)

您从1开始索引,它将跳过数组中的第一项。我已经简化了您的代码,这里是代码,您真的不需要那些if语句

public static void main(String[] args){
    boolean[] lockers = new boolean[100];
    for(int i = 0; i < lockers.length; i++){
        for (int j = i; j < lockers.length; j+=i){
            lockers[j] = !lockers[j];
        }
    }
    for(int i = 1; i <lockers.length; i++){
        System.out.println(lockers[i] + " " + i);
    }
}