0

我正在尝试为此编写一个算法:有 100 个学生和 100 个储物柜。第一个学生从第一个储物柜开始,然后打开每个储物柜。下一个学生,第二个学生,从第二个储物柜开始,如果储物柜打开,每隔一个储物柜就会关闭一次,反之亦然。第三个学生从第三个储物柜开始,每隔三个储物柜重复这个过程。我写了一些我认为应该可以工作的东西,但是我的数组超出了范围,我不知道如何:

public static void main(String[] args) 
{
    int startingStudents = 1;
    int lockersToCheck = 1;
    int lockersPosition = 1;
    boolean[] lockers = new boolean[101];

    //Cycles through 100 students
    for(int students = startingStudents; startingStudents <= 100; students++)
    {
        //What each student does
        while(lockersToCheck <= 100)
        {
                            //If its closed, open
            if(lockers[lockersToCheck] == false)
            {
                lockers[lockersToCheck] = true;
            }
                            //If its open, close
            else
            {
                lockers[lockersToCheck] = false;
            }

                            //Which locker they should be at
            lockersToCheck += lockersPosition;
        }


        //Zero out to start at the right locker
        lockersToCheck = 0;
                    //Where the next student starts
        lockersPosition += students;
                    //Make sure the next student starts there
        lockersToCheck = lockersPosition;

    }

    for(int n = 1; n <= 100; n++)
    {
        System.out.print(lockers[n] + " " + n);
    }

}

谢谢你的帮助!

4

2 回答 2

2

for(int学生=startingStudents;startingStudents <= 100;学生++)

应该

for(int students = startingStudents;学生<= 100; 学生++)

于 2012-09-29T04:20:19.340 回答
0

这是你的循环终止

for(int students = startingStudents; startingStudents <= 100; students++)

应该

for(int students = 1; students <= 100; students++)

因此,我猜你得到的不是 ArrayIndexOutOfBoundsException,而是 Heap-Space-Exception。

于 2012-09-29T04:29:57.003 回答