Где в этом коде ошибка? Почему он не запускается?

Один большой массив и два маленьких
  1. Создать массив на 20 чисел.
  2. Ввести в него значения с клавиатуры.
  3. Создать два массива на 10 чисел каждый.
  4. Скопировать большой массив в два маленьких: половину чисел в первый маленький, вторую половину во второй маленький.
  5. Вывести второй маленький массив на экран, каждое значение выводить с новой строки.
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws Exception {
        int[] big = new int[20];
        int[] small = new int[10];
        int[] smallTwo = new int[10];

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        for (int n = 0; n < big.length; n++) {
            big[n] = Integer.parseInt(reader.readLine());
        }

        for (int n = 0; n < big.length / 2; n++) {
            small[n] = big[n];
        }

        for (int n2 = 10; n2 < big.length / 2; n2++) {
            smallTwo[n2] = big[n2 + big.length / 2];
        }

        for (int n3 = 0; n3 < small2.length; n3++) {
            System.out.println(smallTwo[n3]);
        }
    }
}

Ответы (2 шт):

Автор решения: Aziz Umarov

Исправьте начальное значение в цикле:

for (int n2 = 0; n2 < big.length / 2; n2++) {
    smallTwo[n2] = big[n2 + big.length / 2];
}

Вы начинаете отсчёт с 10, а нужно с 0.

→ Ссылка
Автор решения: Дмитрий

Все потоки ввода-вывода надо закрывать(а еще лучше использовать try with resources), копирование массивов в циклах - так себе идея, для этого есть специальные методы, которые написаны за нас, магические числа - антипаттерн, ридер можно заменить на сканер - это просто короче, пользовательский ввод может содержать ошибки и это неплохо бы предусмотреть, чтобы ваш код не валился с исключением от некорретктного ввода.

import java.util.Arrays;
import java.util.Scanner;

public class Solution {
    
    private final static int SOURCE_ARRAY_SIZE = 20;

    public static void main(String[] args) {
        
        int[] sourceArray = new int[SOURCE_ARRAY_SIZE];
        
        try (Scanner sc = new Scanner(System.in)) {
            for (int i = 0; i < sourceArray.length; i++) 
                sourceArray[i] = Integer.parseInt(sc.nextLine());
        }catch(NumberFormatException e){
            //todo - действия в случае некорреткного пользовательского ввода
            return;
        }
        
        int[] targetAray1 = new int[sourceArray.length/2];        
        System.arraycopy(sourceArray, 0, targetAray1, 0, targetAray1.length);
        
        int[] targetAray2 = new int[sourceArray.length/2];
        System.arraycopy(sourceArray, targetAray2.length, targetAray2, 0, targetAray2.length);
        
        Arrays.stream(targetAray2).forEach(System.out::println);
        
    }
    
}
→ Ссылка