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);
}
}
添加回答
舉報