Где мой массив выходит из границ?
-
11-12-2019 - |
Вопрос
Я пытаюсь написать алгоритм для этого: есть 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, а куча пространства - исключение.