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!");
}
}
}
}
注意:这可以使用更多变量或三元运算符更简洁,但这对新程序员有用。祝你好运。
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);
}
}
添加回答
举报