我的阵列在哪里出界?

时间:2012-09-29 04:17:58

标签: java arrays logic indexoutofboundsexception

我正在尝试为此编写算法:有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);
    }

}

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

for(int students = startingStudents; startingStudents &lt; = 100; students ++)

应该是

for(int students = startingStudents; students &lt; = 100; students ++)

答案 1 :(得分:0)

这是你的循环终止

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

应该是

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

因此,我猜你没有得到一个ArrayIndexOutOfBoundsException,而是一个Heap-Space-Exception。