Q:

Как заполнить массив String введёнными с помощью Scanner данными? 

Вот код:
 Scanner in = new Scanner(System.in);
    ArrayList<Integer> list = new ArrayList<>();
    if (in.next().equals("create")) {
        int n = Integer.parseInt(in.next());
        for (int i = 1; i <= n; i++) {
            list.add(i);
            if (list.size() == n){
                break;
            }
        }
    }
    while (! in.next().equals("printList")){
        String [] arr = in.nextLine().split(" ");

            if (arr[0].equals("add")){
                if (arr.length == 3){
                int a = Integer.parseInt("arr[1]");
                list.add(a);
            }
        }
        System.out.println(list);
    }

Я решаю задачу по обработке списка.  В моём случае сначала на вход подается слово create и число N (например 10).  В первой части кода я заполняю список list числами от 1 до 10.  Здесь вопросов нет.  Далее я попытался создать массив arr, который должен заполнится следующими входными данными: слово "add" и одно число.  Почему то в массив попадает только число, а команда "add" не попадает.  Что мне сделать для того, чтобы слово попало в массив? 
На всякий случай прикрепляю условие задачи, для того, чтобы было более понятно что мне нужно сделать в итоге:
*Существует ряд методов для класса ArrayList: add(n) - вставка в конец, add(i, n) - вставка по индексу, remove(i) - удаление по индексу, set(i, n) - изменение значения по индексу. 
На вход программе подаются строки, первая из которых create N - создает исходный список с числами от 1 до N включительно.  Сигнатуры остальных команд:
add 5 - вставляет 5 в конец списка
add 5 6 - вставляет 6 по индексу 5
remove 7 - удаляет 7 элемент списка
set 7 3 - заменяет значение седьмого элемента списка на 3
Команда printList - сигнализирует о конце ввода данных и должна вывести на экран список, полученный после всех манипуляций* 
Пример входных данных:
create 30

add 12

add 17

add 3 15

remove 4

set 12 34

printList

A:

Первая ошибка:
Вы пишите arr.length == 3, когда нужно написать arr.length == 2(вы же здесь реализуете добавление в конец, не так ли?).   
Вторая, серьезная ошибка:
Обратим внимание на следующее выражение: ! in.next().equals("printList")
Мы берем следующий элемент из очереди и сравниваем его с строкой "printList".  Дело в том, что в случае со строкой "add 2" мы вытаскиваем из очереди строку "add".  Мы никуда эту строчку почему-то не сохраняем.  Поэтому при этой записи, если напечатать содержимое переменной arr, мы получим одинокий элемент "2".  А все потому, что "add" в очереди не осталось. 
Решение:
Вам достаточно создать массив строк, в который в выражении мы будем принимать новую линию, а затем сравнивать ее первый элемент со строкой "printList":
    while (!( userLine = in.nextLine().split(" "))[0].equals("printList")){
        if (userLine[0].equals("add")){
            if (userLine.length == 2){
                int a = Integer.parseInt(userLine[1]);
                list.add(a);
            }
        }
        System.out.println(list);
    }

