为了账号安全,请及时绑定邮箱和手机立即绑定

如何将布尔值 true 或 false 分配给字符串“打开”和“关闭”

如何将布尔值 true 或 false 分配给字符串“打开”和“关闭”

陪伴而非守候 2021-11-24 14:52:10
所以我有这个代码,但我无法弄清楚以下内容:为什么输出停止在 99?我知道我设置了 boolean[100] 并将其更改为 101 但这不起作用。如何让输出打印“Locker x 已打开”或“Locker x 已关闭”?我知道我必须以某种方式分配布尔值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 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

为什么输出停止在 99?

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

区别

1-99 (99 元素)

0-99(100 个元素)

代码

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);

    }

}

如何获得打印 Locker x is open 或 closed 的输出?

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


public class lockerPuzzle{


    public static void main(String[] args){


        // ...


        for(int i = 0; i < lockers.length; i++){

            boolean isOpened = lockers[i]


            if (isOpened) {

                System.out.println("Locker " + i + " is opened!");

            } else {

                System.out.println("Locker " + i + " is closed!");

            }

        }

    }

}

注意:这可以使用更多变量或三元运算符更简洁,但这对新程序员有用。祝你好运。


查看完整回答
反对 回复 2021-11-24
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您从 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);

    }

}


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 201 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信