0

私はこのためのアルゴリズムを書き込もうとしています。100人の学生と100人のロッカーがいます。最初の生徒は最初のロッカーから始めて、すべてのロッカーを開きます。次の生徒である生徒2は、2番目のロッカーから開始し、開いている場合は1つおきにロッカーを閉じます。その逆も同様です。3番目の生徒は3番目のロッカーから始め、3番目のロッカーごとにこのプロセスを繰り返します。動作するはずの何かを書きましたが、配列が範囲外になり、その方法がわかりません。

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 student =startingStudents; startingStudents <= 100; student ++)

する必要があります

for(int student =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 に答える