【问题标题】:Java not inclusive of 100 in 100 LockersJava 不包括 100 个储物柜中的 100 个
【发布时间】:2015-11-14 11:24:41
【问题描述】:

我想要的输出是 locker 1,4,9,16,36,49,81 AND 100。 我正在反复尝试在学生被发送后找到哪些储物柜,并打开每个储物柜。 (默认情况下全部关闭)并打开每个储物柜。然后 2 号学生去每隔一个储物柜,如果它是打开的,就关闭它,如果它是关闭的,就打开它。学生三做同样的事情,但每隔三个储物柜。一直到学生 100。我知道输出应该是所有平方数,但我无法让 100 出现。我错过了什么?我在我的两个迭代中都放了一个

import java.util.Arrays;

public class runLocker {
final static int numberOfLockers = 100;
final static int numberOfStudents = 100;

public static void main(String[] args) {
    // TODO Auto-generated method stub
     int LockersToCloseBy = 1;
    boolean[] totalLockersArray = new boolean[numberOfLockers];
    for(int i = 0; i < totalLockersArray.length - 1; i++){
        totalLockersArray[i] = false;
    }


    for(int n= 0; n < totalLockersArray.length ; ++n){
        for(int j = 0; j < totalLockersArray.length; j+=LockersToCloseBy){

            if(totalLockersArray[j] == true)
            {
                totalLockersArray[j] = false;
            }
            else
            {
                totalLockersArray[j] = true;
            }   
        }
        LockersToCloseBy++;
    }

    for(int i = 0; i < numberOfLockers; i++){
        if(totalLockersArray[i] == true){
            System.out.println("Locker " + i + " is open");
        }
    }


    //Currently outputs 1, 4, 9, 16, 36, 49, and 81...
    //Need it to output 1,4,9,16,36,49,81,100
}

}

【问题讨论】:

  • 数组是从 0 开始的,所以如果你想让索引 100 可用,你的数组必须是 101 长,索引为 0-100。此外,您不需要将布尔数组初始化为 false。就是这样分配的。
  • 部分if(totalLockersArray[j] == true) { totalLockersArray[j] = false; } else { totalLockersArray[j] = true; }可以替换为totalLockersArray[j] = !totalLockersArray[j];

标签: java arrays iteration


【解决方案1】:

您的数组是为索引 [0,...,99] 定义的(总共 100 个元素,不包括 100 个)。

在以下代码中:

for(int i = 0; i < numberOfLockers; i++){
    if(totalLockersArray[i] == true){
        System.out.println("Locker " + i + " is open");
    }
}

100 甚至不是候选人。


一个简单的解决方法是将储物柜数组设置为 101 (numberOfLockers=101),这样所有循环都将包含 100。

【讨论】:

  • @cyroxis 假设您只是跳过“0”之一-您可以忍受。它是 101 个布尔对象,代表 100 个储物柜。 (这正是从LockersToCloseBy =1 开始的代码所做的事情)。
猜你喜欢
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 2013-04-07
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多