Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите найти ошибку в коде Java

Алексей Пахомов Ученик (11), на голосовании 1 год назад
Решал эту задачу:
Напишите программу, которая будет формировать очередь оформления заявок в МФЦ. Сначала водится число n - количество запросов в вашей программе. Каждый из запросов будет иметь один следующих видов:

"Добавить <ИМЯ>" - Добавить человека с именем ИМЯ в конец очереди
"Следующий!" - вызвали человека, следующего первым по очереди. При этом человек с именем ИМЯ уходит из очереди.
"<ИМЯ1> занимала за <ИМЯ2>" - человек с именем ИМЯ1 становится в очередь за человеком по имени ИМЯ2. гарантируется, что человек, за которым занимали очередь стоит в ней.
Гарантируется, что все люди имеют различные имена и при вызове следующего человека, очередь не пуста.

Выведите на экран через пробел очередь после совершения всех запросов.
Пример ввода:
5
Добавить Лена
Добавить Коля
Марина занимала за Лена
Следующий!
Добавить Игорь
Пример вывода:
Марина Коля Игорь
Мой код (для удобства, я добавил номер строк):
 1 import java.util.Scanner; 
2 import java.util.ArrayList;
3
4 class MyProgram{
5 public static void main(String[] args){
6 Scanner scan = new Scanner(System.in);
7 int requests = scan.nextInt();
8 scan.nextLine();
9 ArrayList queue = new ArrayList();
10 for(int i = 0; i < requests; i++){
11 String[] commandAndName = scan.nextLine().split(" ");
12 if(commandAndName[0].equals("Добавить")){
13 queue.add(commandAndName[1]);
14 } else if(commandAndName[0].equals("Следующий")){
15 queue.remove(queue.size()-1);
16 } else if(commandAndName[1].equals("занимала")){
17 int index = queue.indexOf(commandAndName[3]);
18 queue.add(index, commandAndName[0]);
19 }
20 }
21 for(String names : queue){
22 System.out.print(names + " ");
23 }
24 }
25 }
Этот код, при вводе данных из примера, выдает исключение:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at MyProgram.main(Main.java:16)
Я весь день решал задачи, по этому сильно туплю. Не могу понять почему индекс 1 выходит за рамки массива. Подскажите почему так происходит. Заранее всем спасибо.
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264043) 1 год назад
16 } else if(commandAndName[1].equals("занимала")){
Откуда известно, что имеется элемент с индексом 1?
Для начала : if(commandAndName[0].equals("занимала"))
Алексей ПахомовУченик (11) 1 год назад
Ну в commandAndName[0] хранится Имя человека. А оно, при следующем вводе, может быть другим
Алексей ПахомовУченик (11) 1 год назад
А, все, я понял что нужно сделать. Спасибо
Похожие вопросы