¿De dónde viene mi array fuera de los límites?
-
11-12-2019 - |
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!
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.