Pregunta

Estoy tratando de escribir un algoritmo para esto: hay 100 estudiantes y 100 casilleros.El primer estudiante comienza en el primer casillero y se abre a todos.El próximo estudiante, el estudiante dos, comienza en el segundo casillero y cierra cada segundo casilleros si está abierto, y viceversa.Los terceros estudiantes comienzan en el tercer casillero, y para cada tercer Locker, repite el proceso.Escribí algo que creo que debería funcionar, pero mi matriz está saliendo de límites y no veo cómo:

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

}

¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

para (intentadores INT= estudiantes iniciales; tInftstudientes <= 100; estudiantes ++)

debe ser

para (intentadores INT= estudiantes iniciales; estudiantes <= 100; estudiantes ++)

Otros consejos

es su terminación de bucle

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

debe ser

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

Por lo tanto, supongo que no está obteniendo una concepción de ArrayIndexOutOfboundsexSeguex, sino una excepción de espacio para montón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top