Вопрос

Я пытаюсь написать алгоритм для этого: есть 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);
    }

}
.

Спасибо за любую помощь!

Это было полезно?

Решение

для (int студентов= стартовые средства; стартовары <= 100; студенты ++)

должен быть

для (int студентов= стартовые средства; студенты <= 100; студенты ++)

Другие советы

Это ваша петля-завершение

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

должен быть

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

Поэтому, я думаю, вы не получаете ArrayIndexoutOFBoundSexception, а куча пространства - исключение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top