Pergunta

Estou tentando escrever um algoritmo para isso:São 100 alunos e 100 armários.O primeiro aluno começa no primeiro armário e abre todos.O próximo aluno, aluno dois, começa no segundo armário e fecha a cada segundo armário se estiver aberto e vice-versa.O terceiro aluno começa no terceiro armário e, a cada terceiro armário, repete o processo.Escrevi algo que acredito que deveria funcionar, mas meu array está ultrapassando os limites e não vejo como:

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);
    }

}

Obrigado por qualquer ajuda!

Foi útil?

Solução

for(int alunos = iniciandoAlunos; começandoAlunos <= 100;estudantes++)

deveria estar

for(int alunos = iniciandoAlunos; estudantes<= 100;estudantes++)

Outras dicas

É a sua terminação de loop

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

Deveria estar

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

Portanto, acho que você não está recebendo uma ArrayIndexOutOfBoundsException, mas uma Heap-Space-Exception.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top