Dado um array de inteiros e um valor alvo, determine o número de pares entre os elementos do array em que a sua diferença seja igual ao valor alvo

Exemplo
K = 1
arr = [1,2,3,4]
Existem 3 valores cuja diferença é igual ao valor alvo K: 2-1 = 1, 3-2 = 1, 4-3 = 1.

No caso, eu fiz dessa forma, até agora:

public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

    int tamanhoLista = Integer.parseInt(st.nextToken());
    int alvo = Integer.parseInt(st.nextToken());
                
    ArrayList<Integer> lista = new ArrayList<Integer>();
    ArrayList<Integer> resultado = new ArrayList<Integer>();
    
    for (int i = 0; i < tamanhoLista; i++) {
    	st = new StringTokenizer(br.readLine());
        lista.add(Integer.parseInt(st.nextToken()));
    	
     }
 }

}

Mas eu não consigo pegar o valor alvo pra logica do segundo for, não sei oq estou fazendo errado, alguém pode me ajudar?

Porque está usando um StringTokenizer?
Apenas o BufferedReader é suficiente para ler entrada do usuário.

Em um outro exemplo que eu vi usava os dois… não tem necessidade?

Estou fazendo com o scanner, deu certo!

public static void main(String[] args) throws Exception {

  Scanner ler = new Scanner(System.in);        

  int n;
  
  System.out.printf("Informe o tamanho do lista:");
  n = ler.nextInt();
             
  ArrayList<Integer> entrada = new ArrayList<Integer>();
  ArrayList<Integer> numerosPares = new ArrayList<Integer>();
  ArrayList<Integer> numerosImpares = new ArrayList<Integer>();

  System.out.println("Informe os numeros da lista:");
  for (int i = 0; i < n; i++) {
      ler = new Scanner(System.in);
      entrada.add(ler.nextInt());
      
      if (entrada.get(i) % 2 == 0) { 
      	numerosPares.add(entrada.get(i));
      } else {
      	numerosImpares.add(entrada.get(i));
      }       
  }
  
  Collections.sort(numerosPares);    
  Collections.sort(numerosImpares);        
  Collections.reverse(numerosImpares);

  System.out.println("Numeros pares:");
  for (int par : numerosPares) {
      System.out.println(par);
  }

  System.out.println("Numeros impares:");
  for (int impar : numerosImpares) {
      System.out.println(impar);
  }
  ler.close();

}